将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
当一个复杂对象的创建需要很多步骤的时候,这些步骤在不同的条件下是变化的.通过不同的Builder创建'不同风格'的复杂对象.
为什么不用类本身的constructor呢,构造函数应该只是对本身的数据(state&data)进行初始化.
Builder的buildPart可以在ConcreteBuilder被override,不同的ConcreteBuilder的buildPart不同,从而
得到不同的product.
客户端代码通过使用不同ConcreteBuilder,得到不同规格的产品.
Builder builder = new ConcreteBuilder();//这个地方也可根据外部配置文件进行反射.
Director director = new Director( builder );
Product product = builder.getResult();
Builder 和Factory有什么区别呢,我们包Builder简化,去掉Director,发现其和简单Factory就一样了.
为什么有了Factory还要有Builder呢,客户端无非都是得到想要的product啊?不理解......,目前的理解是:
Builder:分步骤的,构建出一个复杂对象,这个复杂对象有很多parts,在不同的场景中,part可能不同.
e.g. 一座房子,有屋顶,门,天花板,地板.
房子A的屋顶是欧式的斜顶,门是木门,天花板也是木的,地板也是木的.
房子B的屋顶是平顶的水泥板,门是防盗门,天花板是吊顶的,地板是木的.
它们的组成过程一样,每一个parts不同.
Simple Factory:构建简单对象,在不同的场景中,这个对象的实现可能不一样.
e.g. 保存数据的一个类,都有save方法.
类A的save方法把数据保存到DB.
类B的save方法把数据保存到File.
客户端通过factory得到一个这种类的对象,不关心是类A还是类B,调用save就行了.
Abstract Factory:构建系列对象,对象间有关联,不同的场景关联不同.
有一个factory,创建两个不同的task,task1和task2.
factoryA创建的task1要在task2之前完成.
factoryB创建的task1要在task2之后完成.
(parts不同,更关注这个对象的组成,实现不同,更关注这个对象的行为.)
其实,客户端本来就不关心你用的是Builder,Factory,Abstract Factory,只有你保证客户端代码不用改就行了.
分享到:
相关推荐
Builder模式 设计模式 Builder模式
Builder模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 统设计中,有时候面临着一个“复杂系统”的创建工作,该对象通常由各个部分的子对象用一定的算法构成,或者说按一定的...
在设计模式中对Builder模式的定义是用于构建复杂对象的一种模式,所构建的对象往往需要多步初始化或赋值才能完成。那么,在实际的开发过程中,我们哪些地方适合用到Builder模式呢?其中使用Builder模式来替代多参数...
23种设计模式之四(创建型模式)Builder模式
【Java面试题】builder模式
BUILDER模式 C++实现
demo中使用了设计模式中的建造者模式,代码非常精简,本地可正常运行,亲测有效!
NULL 博文链接:https://wy649898543.iteye.com/blog/1431751
FreeBuilder为 Java 1.6 自动生成 Builder 模式。当设计类的构造函数或静态工厂具有多个参数时,Builder 模式是一个不错的选择。—— Effective Java,第二版,第39页背景在 Java 中实现 Builder 模式容易出错和...
东北大学设计模式实验 实现单例模式,组合模式,Builder模式,装饰器模式,并使用设计模式实现赌场
软件体系结构Builder模式浅谈PPT形式
用于学习android java builder模式
FreeBuilder 为 Java 1.6 自动生成 Builder 模式。 当设计类的构造函数或静态工厂具有多个参数时,Builder 模式是一个不错的选择。
Builder模式Demo
Builder模式代码-一个java类 Builder模式代码-一个java类
使用Builder模式设置字体大小、颜色、位置的属性
通过builder来实现自定义顶部导航topbar,内含builder模式实现的simple.http://blog.csdn.net/qq_28690547/article/details/50493099实现同步博文
Java设计模式:Builder模式应用案例[整理].pdf