javaScript设计模式简记(1)-创建型设计模式

1.简单工厂模式(工厂函数)

简单工厂模式(Simple Factory):又叫静态工厂方法,由一个工厂对象决定创建某一种产品对象类的实例。主要用来创建同一类对象。

 

 这两种简单工厂模式的区别

 

2.工厂模式

工厂方法模式(Factory Method);通过对产品类的抽象使其创建业务,主要负责用于创建多类产品的实例。

安全模式

 

3.抽象工厂模式

抽象工厂模式(Abstract Factory):通过对类的工厂抽象使其业务用于对产品类簇的创建,而不负责创建某一类产品的实例。

抽象类中定义的方法只是显性地定义一些功能,但没有具体的实现,而一个对象是要具有一套完整的功能的,所以用抽象类创建的对象当然也是‘抽象的’了,所以不能使用它来创建一个真实的对象,一般用它作为父类来创建一些子类。

抽象工厂模式是设计模式中最抽象的一种,也是创建模式中唯一一 种抽象化创建模式。该模式创建出的结果不是一个真实的对象实例,而是一个类簇,它制定了类的结构,这也就区别于简单工厂模式创建单一对象,工厂方法模式创建多类对象。当然由于JavaScript中不支持抽象化创建与虚拟方法,所以导致这种模式不能像其他面向对象语言中应用得那么广泛。

 

4.建造者模式

建造者模式(Builder): 将一个复杂对象的构建层与其表示层相互分离,同样的构建过程可采用不同的表示。

 

这几种工厂模式,他们都有一个共同特点,就是创建的结果都是一个完整的个体,我们对创建过程不得而知,我们只了解得到的创建结果对象。而在建造者模式中我们关心的是对象创建过程,因此我们通常将创建对象的类模块化,这样使被创建的类的每-一个模块都可以得到灵活的运用与高质量的复用。当然我们最终的需求是要得到一个完整的个体,因此在拆分创建的整个过程,我们将得到一个统一的结果。当然这种方式对于整体对象类的拆分无形中增加了结构的复杂性,因此如果对象粒度很小,或者模块间的复用率很低并且变动不大,我们最好还是要创建整体对象。

 

5.原型模式

原型模式(Prototype): 用原型实例指向创建对象的类,使用于创建新的对象的类共享原型对象的属性以及方法。

 

 

不过原型模式更多的是用在对对象的创建上。比如创建-一个实例对象的构造函数比较复杂,或者耗时比较长,或者通过创建多个对象来实现。此时我们最好不要用new 关键字去复制这些基类,但可以通过对这些对象属性或者方法进行复制来实现创建,这是原型模式的最初思想。如果涉及多个对象,我们也可以通过原型模式来实现对新对象的创建。那么首先要有一个原型模式的对象复制方法。

 

原型模式可以让多个对象分享同一个原型对象的属性与方法,这也是一种继承方式,不过这种继承的实现是不需要创建的,而是将原型对象分享给那些继承的对象。当然有时需要让每个继承对象独立拥有一份原型对象,此时我们就需要对原型对象进行复制。由此我们可以看出,原型对象更适合在创建复杂的对象时,对于那些需求一直在变化而导致对象结构不停地改变时,将那些比较稳定的属性与方法共用而提取的继承的实现。

 

6.单例模式

单例模式(Singleton): 又被称为单体模式,是只允许实例化一次的对象类。 有时我们也用一个对象来规划一个命名空间,井井有条地管理对象上的属性与方法。

 定义静态私有变量

 

 

惰性创建

 

 

posted @ 2020-06-05 16:04  LeoX的爬坑笔记  阅读(138)  评论(0编辑  收藏  举报