一、生成器模式
封装一个复杂对象构造过程,并允许按步骤构造
二、示例
度假计划生成项目:时间、门票、餐厅、住宿、特殊活动等,一个计划就是一个具体对象,要便于扩展
对于用户来说关心的只是选择计划的种类,例如3日游、4日游和他的旅行开始时间,然后得到计划的细节安排
此处则使用生成器模式,将不同的计划安排制定成模板,选择不同的模板引入旅游的开始日期即可生成计划书
1.定义旅游安排的对象和属性
1 |
|
1 |
|
2.定义生成器的抽象类和抽象方法
1 |
|
3.实现抽象类,制定不同的计划模板
1 |
|
1 |
|
4.定义引导者,对外提供生成方法
1 |
|
5.对外直接调用引导者生成对象即可
1 |
|
三、生成器的演化
为了简化生成器模式的使用,慢慢发生了演变:
- 省略抽象生成器类
- 省略指导者类
参考:Java中的StringBuilder即为字符串的一种生成器
四、总结
- 将复杂对象的创建过程封装起来
- 允许对象通过几个步骤来创建,并且可以改变过程(工厂模式只有一个步骤)
- 只需指定具体生成器就能生成特定对象,隐藏类的内部结构
- 对象的实现可以被替换
Java设计模式所有示例代码,持续更新中