面向对象的几种设计模式

第一种模式:工厂模式

function Parent(){

     //原料
	var Child=new Object();//创建对象

     //加工
	Child.name="aaa";//对象属性
	Child.age="30";
	child.fn=fn;  //对象方法

     //出厂    return Child;  //一定要返回该对象
};
var fn=function(){
	return "111";
};

var x=Parent();//创建实例
alert(x.name);

说明:

1.在函数中定义对象,并定义对象的各种属性,虽然属性可以为方法,但是建议将属性为方法的属性定义到函数之外,这样可以避免重复创建该方法;

2.引用该对象的时候,这里使用的是 var x = Parent()而不是 var x = new Parent();因为后者会可能出现很多问题(前者也成为工厂经典方式,后者称之为混合工厂方式),不推荐使用new的方式使用该对象;

3.在函数的最后返回该对象;

4.不推荐使用这种方式创建对象,但应该了解

  5.工作原理很像是在工厂工作的一个流程,那就是:原料、加工、出厂。

第二种模式:构造函数模式

function Parent(){
    this.name="aaa";//对象属性
    this.age="30";
    this.fn=fn;  //对象方法
}
var fn=function(){
    return "111";
}

var x=new Parent();//创建实例
alert(x.name);

说明:

1.与工厂方式相比,使用构造函数方式创建对象,无需在函数内部重建创建对象,而使用this指代,并而函数无需明确return

2.同工厂模式一样,虽然属性的值可以为方法,扔建议将该方法定义在函数之外

3.同样的,不推荐使用这种方式创建对象,但仍需要了解

第三种模式:原型模式

function Parent(){
    Parent.prototype.name="aaa";//对象属性
    Parent.prototype.age="30";
    Parent.prototype.fn=fn;  //对象方法
}
var fn=function(){
    return "111";
}

var x=new Parent();//创建实例
alert(x.name);

说明:

1.函数中不对属性进行定义

2.利用prototype属性对属性进行定义

3.同样的,不推荐使用这样方式创建对象

第四种模式:构造函数+原型混合模式(推荐)

   function Parent(){  //构造函数加属性
      this.name="aaa";
      this.age=3;
    };
    Parent.prototype.fn=function(){ //原型上加方法
       return this.name;
    };

    var  x =new  Parent();
    alert(x.fn()); 

说明:

1.该模式是指混合搭配使用构造函数方式和原型方式;

2.将所有属性不是方法的属性定义在函数中(构造函数加属性);将所有属性值为方法的属性利用prototype在函数之外定义(原型上挂方法);

3.推荐使用这样方式创建对象;

第五种模式:构造函数+原型的动态原型模式(推荐)

function Parent(){
      this.name="aaa";
      this.age=30;
         if(typeof Parent._fn=="undefined"){
             Parent.prototype.fn=function(){
                 return this.name;
             }
             Parent._fn=true;
         }  

    };   

    var  x =new  Parent();
    alert(x.fn());

说明:

1.动态原型方式可以理解为混合构造函数,原型方式的一个特例

2.该模式中,属性为方法的属性直接在函数中进行了定义,但是因为

if(typeof Parent._fn=="undefined"){                  
           Parent._fn=true;
        } 
     从而保证创建该对象的实例时,属性的方法不会被重复创建

时间: 2024-10-10 17:12:21

面向对象的几种设计模式的相关文章

面向对象开发中的七大设计原则和23种设计模式

一.面向对象开发中的七大设计原则 软件开发中最核心的思想就是"高内聚,低耦合",主要的目的也是为了方便后期的维护和变更.下面的设计原则也是依靠这个核心思想衍生出来的. 1.单一职责原则[SINGLE RESPONSIBILITY PRINCIPLE]:单一职责原则想表达的核心思想就是"高内聚",一个模块只完成一项功能.在面向对象设计中,一个类只应该负责一项职责,如果同时承担太多职责,就等于把这些职责耦合在了一起. 后面很可能因为某项职责的变更而导致其他职责的削弱或者

Java开发中的23种设计模式详解(转)

设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周

23种设计模式【转】

23种设计模式 目录 创建型 1. Factory Method(工厂方法) 2. Abstract Factory(抽象工厂) 3. Builder(建造者) 4. Prototype(原型) 5. Singleton(单例) 结构型 6. Adapter Class/Object(适配器) 7. Bridge(桥接) 8. Composite(组合) 9. Decorator(装饰) 10. Facade(外观) 11. Flyweight(享元) 12. Proxy(代理) 行为型 13.

0. Java开发中的23种设计模式详解(转)

设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周

23种设计模式全解析

一.设计模式的分类 总体来说设计模式分为三大类: 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模式,共十一种:策略模式.模板方法模式.观察者模式.迭代子模式.责任链模式.命令模式.备忘录模式.状态模式.访问者模式.中介者模式.解释器模式. 其实还有两类:并发型模式和线程池模式.用一个图片来整体描述一下: 二.设计模式的六大原则 总原则:开闭原则(Open C

c#中的23种设计模式

C# 23种设计模式汇总 创建型模式 工厂方法(Factory Method) 在工厂方法模式中,工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪种具体产品类将被实例化这一细节.工厂方法模式的核心是一个抽象工厂类,各种具体工厂类通过抽象工厂类将工厂方法继承下来.如此使得客户可以只关心抽象产品和抽象工厂,完全不用理会返回的是哪一种具体产品,也不用关系它是如何被具体工厂创建的. 抽象工厂模式(Abstract Factory) 抽象工厂模式的主要优点是隔离了具体类的生成,使得客户不需要知道什么

iOS 23 种设计模式

设计模式主要分三个类型:创建型.结构型和行为型. 其中创建型有: 一.Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点 二.Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类. 三.Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类. 四.Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使

设计模式学习第一天:23种设计模式(全)

C#常见的设计模式 一.概要: 模式分为三种,设计模式.体系结构模式与惯用法.其中惯用法是一种语言紧密相关的模式,例如,定界加锁模式其实是一种惯用法. 在C#项目开发过程中,很多情况下您已经使用了某些模式,但或许您并不知道自己所使用的这种解决方案是一种已经被总结归纳的模式. 工厂.策略.桥接.模板方法.代理等等23种Gof经典模式是属于设计模式,设计模式的粒度相对较小,基本上用于提高模块内部的可扩展性和可维护性需求 三层.MVC.IoC/DI等属于体系结构模式,粒度比设计模式大,它是从项目的整体

23种设计模式(转)

设计模式(Design Patterns) --可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样.项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周