设计模式是经过总结、优化的,对经常碰到的一些编程问题可重用的解决方案。
创建型模式抽象了实例化过程,类创建型模式-使用继承改变被实例化的类,对象创建型模式-将实例化委托给另一个对象。
抽象工厂(abstract factory)
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
AbstractFactory:声明创建抽象产品对象的接口。
ConcreteFactory:创建具体的产品对象,实现AbstractFactory接口。
AbstractProduct:为一类产品对象声明接口。
ConcreteProduct:被ConcreteFactory具体工厂创建的具体产品对象,实现AbstractProduct接口。
client:仅使用由AbstractFactory和AbstractProduct类声明的接口,AbstractFactory将对象的创建延迟到ConcreteFactory子类。
生成器(Builder)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
Builder:为创建一个product对象的各个部件指定抽象接口
ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部件
Director:构造一个使用Builder接口的对象
Product:表示被构造的复杂对象,ConcreteBuilder创建该产品的内部表示并定义它的装配过程;包含定义组成部件的类,包括将这些部件装配成最终产品的接口。
使用过程:客户创建Director对象,并用它所想要的Builder对象进行配置;一旦产品部件被生成,导向器就会通知生成器;生成器处理导向器的请求,并将部件添加到该产品中;客户从生成器中检索产品。
工厂方法(factory method)
定义一个用于创建对象的接口,让子类决定实例化哪一个类。
Product:定义创建对象的接口
ConcreteProduct:实现Product接口
Creator:声明工厂方法,该方法返回一个Product类型对象
ConcreteCreator:重定义工厂方法,返回一个ConcreteProduct实例
原型(prototype)
Prototype:声明一个克隆自身的接口
ConcretePrototype:实现一个克隆自身的操作
Client:让一个原型克隆自身从而创建一个新对象
单例模式(Singleton)
保证一个类仅有一个实例,并提供一个访问它的全局访问点。