生成器模式(Builder)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

这里的“表示”就是指其创建出来的“产品对象”。
- Builder用于创建复杂对象,这里复杂对象指它有多个组成部分(部件)。Builder为必要的部件提供创建接口,由使用者来调用。
- 部件的创建接口有两个职责:创建部件、将部件组装进最终的产品
- Builder为客户屏蔽了部件的细节,客户只用关心是否要创建某个部件,不需要关注创建出来的部件具体是什么
同其他创建型模式的差别:
- Builder将一步步创建部件的过程交给客户控制,使其可以进行更精细的控制
- Builder在最后一步,将最终产返回
原型模式(Prototype)
用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象

- Prototype的本质是通过clone操作,用一个对象生成另一个对象
- 当一个类的实例,只会有少数几种不同状态的组合时,很适合用Prototype。但这种情况下,复用对象应该会比,创建一批完全相同的对象更合适。
- 在类是“第一类对象”的语言(如: Python)中,类本身就像是一个Prototype
- 在使用工厂类的模块中,适当将工厂与Prototype结合可以减少工厂的层次。一个具体工厂,就能创建多种产品(产品的层次不会改变)
class Product { ... }
class ProductA : Product { ... }
class ProductB : Product { ... }
// 工厂
class Factory
{
private Product ;
public Factory(Product p)
{
_p = p;
}
Product Create(int someArg)
{
Product rst = p.Clone();
rst.Init(someArg);
// do somthing else~
return rst;
}
}
// 创建示例
Factory fa = new Factory(new ProductA());
fa.Create(666);
Factory fb = new Factory(new ProductB());
fb.Create(888);
创建型模式还有工厂跟单例,在之前文章列过了。
GoF基础设计模式(Head First篇)
GoF - 工厂模式(Factory Pattern)
网友评论