创建型模式4-生成器模式

创建型模式4-生成器模式

生成器模式(builder)

意图

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

问题思考

设计一个HTTP请求对象,用户可能会添加很多http参数,比如:zip,http版本。我们可以设计不同版本的构造函数。但我们构造函数的个数就要跟http参数一样多。

适用性

  • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的构造方式的时候
  • 当构造过程必须允许被构造的对象有不同的表示的时候

类图

builder

实现


class Builder {
public:
    Builder& BuildPart1();
    
    Builder& BuildPart2();
    
    Builder& BuildPart3();
    
    Product GetResult();    // method name also could be Build()
};

注意:这里Builder也可以设置为一个抽象类,然后一个子builder来实现具体的build操作(《设计模式》中采用的是这种方式)。方法名也可以取成其他的。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 场景问题# 1.1 继续导出数据的应用框架## 在讨论工厂方法模式的时候,提到了一个导出数据的应用框架。 对于...
    七寸知架构阅读 5,875评论 1 64
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 前段时间,在自己糊里糊涂地写了一年多的代码之后,接手了一坨一个同事的代码。身边很多人包括我自己都在痛骂那些乱糟糟毫...
    丑小丫大笨蛋阅读 643评论 0 2
  • 引子 九月,一座小小的茅草屋前,秋风瑟瑟凉透人心。 奉珠和月老一人叼着一根狗尾巴草蹲在茅草屋前面,奉珠看了一眼月老...
    树生苔阅读 1,110评论 3 11
  • 有一些朋友问我:为什么我加到了他的微信,可他却对我爱答不理的呢,他好像也没有女朋友啊,而且也不像是那种不懂得怎么和...
    卡罗猫阅读 183评论 0 0