1、Simple Factory Pattern
******************************
专门定义一个“工厂类”,该类根据不同的参数创建不同的“产品类”的实例。通常被创建的实例具有相同的父类。
例如:
要生产CPU,有两种品牌:AMD和Intel。可以建立一个CPU_Factory, 它的方法Create根据传入的参数不同,返回AMD或Intel对象。
******************************
2、Factory Method Pattern
******************************
将Simple Factory中,“父类工厂”创建“产品类”实例的操作延迟到“子类工厂”中,由“子类工厂”来决定实例化哪个“产品类”。
例如:父类CPU_Factory不在亲自创建CPU,而是留给AMD_Factory和Intel_Factory来具体实施。
******************************
3、Abstract Factory Pattern
******************************
提供一个创建一系列相关或相互依赖对象的接口,而无须制定他们具体的类。
与Factory Method最大的区别是,后者针对的是一个产品的等级结构,而抽象工厂针对的是多种不同产品的等级结构。
例如:Dell和IBM这两个子工厂生产的是一系列不同的产品(CPU,HardDisk,Mainboard)的组合(称为一个产品族);这两个工厂会选择不同的品牌作为产品族的成员。
4、Builder Pattern
******************************
复杂对象的构建过程可能分很多步骤,可以将构建过程与对象的表示相分离, 使得同样的构建过程可以创建不同的表示。该模式包括“指挥者(Director)”,“建造者(Builder)”和“产品类(Product)”。建造者为指挥者提供一系列构建产品所需要的接口,指挥者将这些接口按一定的次序组合,以完整整个构建流程。
类图如下:
例如:车间(shop)作为指挥者,指挥车辆的装配过程,车行(VehicleBuilder)采用不同车间装配出不同类型的车辆。类图如下:
******************************
5、Prototype Pattern
******************************
指定创建对象的种类,并且通过拷贝这些原型创建新的对象。允许一个对象再创建另一个可订制的对象,而无须知道任何创建的细节。工作原理是:通过将一个原型对象(Prototype)传给那个要发动创建的对象(Client),Client通过请求Prototype的拷贝原型方法来实施创建过程。其本质非常简单,即作为原型的那个类创建了一个拷贝的方法即可。
类图如下:
******************************
6、Singleton Pattern
******************************
确保一个类只有一个实例,并且自行实例化并向整个系统提供这个实例。
要点有三:1、只能有一个实例;2、必须自行创建这个实例;3、自行向整个系统提供这个实例。
其类图非常简单,只需要在该类中定义一个该类的静态实例,并通过初始化创建这个实例(或通过方法创建/提供这个实例)即可。类图如下: