设计模式(二)---构造者模式汇总
简单工厂模式
简单工厂模式结构图:
简单工厂模式包括这几个角色:
- Prouduct(抽象产品):所有具体产品的基类,符合依赖反转原则
- ConcreteProduct(具体产品)
- Factory(产品工厂):对外提供产品的入口
工厂方法模式
工厂方法模式结构如图:
包括如下角色:
- Product(抽象产品)
- ConcreateProduct(具体产品)
- Factory(抽象公厂)
- ConcreateFactory(具体工厂):每一个具体工厂对应一个具体产品
工厂方法旨在改进简单工厂的不便于拓展,但也同时使类大大增加,增加了系统的复杂度。
抽象工厂模式
抽象工厂模式结构如图:
包括如下角色:
- Product(抽象产品)
- ConcreateProduct(具体产品)
- Factory(抽象公厂)
- ConcreateFactory(具体工厂):每一个具体工厂对应一个产品族
抽象工厂模式综合了简单工厂与工厂方法模式。相对于简单工厂的难以拓展,继承了工厂方法的多工厂思想,同时针对工厂方法的类复杂,糅合了简单工厂的单工厂多产品思想,一个具体工厂可以生产一个产品族。
建造者模式
建造者模式相对于前面的几个侧重于创建,更侧重于集成。
建造者模式适用于构建一个复杂对象。
建造者模式结构图如下:
包括如下角色:
- Builder(抽象建造者)
- ConcreateBuilder(具体建造者)
- Product(复杂产品)
- Director(指挥者类):负责安排复杂对象的构造次序,指挥者与抽象构造者之间存在关联关系,可以在其construct()建造方法中调用建造者对象的部件构造与装配方法,完成复杂对象的构造。
原型模式
原型模式定义:通过复制原型对象创建与之相同的对象。
C++中的对象拷贝构造函数就是原型模式思想。
单例模式
单例模式定义:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式要点有三:1.单例类只能有一个实例。
2.它必须自行创建这个实例 3.它必须自行向整个系统提供这个实例。
单例模式结构图如图:
单例模式有饿汉式单例以及懒汉式单例,上述结构图为懒汉式单例。饿汉式单例是静态成员对象在初始化时即创建好。