《大话设计模式》笔记(1)——创建型模式

 1、简单工厂模式/静态工厂方法

  定义:简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。

  UML:

《大话设计模式》笔记(1)——创建型模式

   PS这个设计模式太简单了,没什么好解说的,简单来说就是通过传入一个标识到工厂类方法中,返回相应的具体产品。

 

2、工厂方法模式

  定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使得一个类的实例化延迟到其子类。

  UML:

《大话设计模式》笔记(1)——创建型模式

   PS:简单工厂模式的优点在于工厂类中包含了必要的逻辑判断,根据客户端传入的标识来动态实例化相应的类。

    工厂方法模式是把简单工厂的内部逻辑判断,移到了客户端进行,由客户端调用具体的工厂类ConcreteFactory去生成相应的具体产品ConcreteProduct。如上面UML中所示,每一种产品都有相应的工厂类ConcreteFactory,有多少种产品就有多少个工厂类ConcreteFactory。

 

3、抽象工厂模式(Abstract Factory)

  定义:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。

  UML:

《大话设计模式》笔记(1)——创建型模式

  PS:比如我们的系统需要同时支持Oracle和MSSql,那我们可以把上面UML中的ProductA1看做是对Oracle数据库的操作,ProductA2看做是对MSSql数据库的操作,这时使用抽象工厂模式的好处时,如果哪天需要把MSSql数据库切换成Oracle数据库时,就只需要更改使用到ConcreteFactory的地方就可以。此模式主要利用的就是面向接口编程的优点。该模式可以配合简单工厂模式,或用反射+配置文件的方式来进一步优化。

 

4、建造者模式(Builder)

  定义:建造者模式又称生成器模式,它将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

  UML:

《大话设计模式》笔记(1)——创建型模式

  PS:具体建造者类ConcreteBuilder.BuildPart()只建造成品的特定组件,ConcreteBuilder中可能有多个BuildPart()去建造各种组件,然后具体成品的组装则由Director来完成。我第一反应是觉得Director完全没有存在的必要,直接都由建造者来完成就可以了,但再想想时觉得,这也许就是减耦建造组件和组装组件的耦合。至于是把代码放在同一个类中或多个类中不一定就对模式有破坏性。

  参考代码:

 

《大话设计模式》笔记(1)——创建型模式

《大话设计模式》笔记(1)——创建型模式

  应用场景类比:建造胖瘦小人

  

5、原型模式(Prototype)

  定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

  UML:

 

《大话设计模式》笔记(1)——创建型模式

 

  PS:原型类中定义一个方法来克隆自身,可以实现ICloneable接口来完成原型模式。

  应用场景类比:简历复制

 

 

6、单例模式(Singleton)

  定义:保证一个类只有一个实例,并提供一个访问它的全局访问点。

  UML:

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyysjw.html