设计模式之对象创建型 — builder 生成器模式
本系列博客示例代码均为C++代码,个人之言,请持怀疑态度参考。
意图
将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示
个人理解
生成器模式通俗的说就是构造一个对象可以分为2步,第一步是构建,第二部是表示(生成器)。构建部分是可以重用的,生成器部分则需要写不同的算法。构建部分通过与生成器的抽象接口交互,实际上并不需要太关心隐藏在接口后边的复杂的算法。
实例说明
假设要写一个RTF文档转多种正文格式的阅读器,最终生成多种格式的正文。
生成这个正文可以分为两步:
- 解析RTF语法
- 生成多种格式的正文
显然解析语法部分是可以从用的,生成部分则使用多个不同的具体生成器来实现
结构类图
适用性(什么时候适合用生成器模式)
- 当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时。
- 当构造过程必须允许被构造的对象有不同的表示时
模式结构
- Builder
为创建一个Product对象的各个部件指定抽象接口- ConcreteBuilder
实现Buider的接口;定义并明确他所创建的表示;提供一个取得产品的接口- Director
构造一个使用Builder接口的对象
效果
- 它可以使你很容易的改变一个产品的内部表示
- 他将构造代码与表示的代码分离
- 它可以使你对构造过程进行更加精细的控制
与Abstract Factory 模式的区别
- Abstract Factory 模式着重于多个系列的产品对象,Builder模式着重于一步步构造复杂的对象。
- Abstract Factory模式的每一个组件(或者产品)是被立马返回的,Builder模式是在产品最后组装完成后返回。
我的个人网站 http://www.breeziness.cn/
我的**** http://blog.****.net/qq_33775402
转载请注明出处 小风code www.breeziness.cn