设计模式之对象创建型 — builder 生成器模式

本系列博客示例代码均为C++代码,个人之言,请持怀疑态度参考。

意图

将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示


个人理解

生成器模式通俗的说就是构造一个对象可以分为2步,第一步是构建,第二部是表示(生成器)。构建部分是可以重用的,生成器部分则需要写不同的算法。构建部分通过与生成器的抽象接口交互,实际上并不需要太关心隐藏在接口后边的复杂的算法。


实例说明

假设要写一个RTF文档转多种正文格式的阅读器,最终生成多种格式的正文。

生成这个正文可以分为两步:

  • 解析RTF语法
  • 生成多种格式的正文

显然解析语法部分是可以从用的,生成部分则使用多个不同的具体生成器来实现

结构类图
这里写图片描述


适用性(什么时候适合用生成器模式)
  • 当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时。
  • 当构造过程必须允许被构造的对象有不同的表示时

模式结构

这里写图片描述

  • Builder
    为创建一个Product对象的各个部件指定抽象接口
  • ConcreteBuilder
    实现Buider的接口;定义并明确他所创建的表示;提供一个取得产品的接口
  • Director
    构造一个使用Builder接口的对象

效果
  • 它可以使你很容易的改变一个产品的内部表示
  • 他将构造代码与表示的代码分离
  • 它可以使你对构造过程进行更加精细的控制

与Abstract Factory 模式的区别
  • Abstract Factory 模式着重于多个系列的产品对象,Builder模式着重于一步步构造复杂的对象。
  • Abstract Factory模式的每一个组件(或者产品)是被立马返回的,Builder模式是在产品最后组装完成后返回。

我的个人网站 http://www.breeziness.cn/
我的CSDN http://blog.csdn.net/qq_33775402

转载请注明出处 小风code www.breeziness.cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值