生成器模式
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
生成器模式设计类图
各组成部分的意义如下
(1)Builder:创建Product对象的抽象接口 (2)ConcreteBuilder1、 ConcreteBuilder2 ① 抽象类Builder的具体实现类,创建并组装这些对象的“零件”
② 定义并且跟踪它所创建的产品对象 ③ 提供一个接口getObject()用来被调用,返回组装好的对象 (3)Director:使用Builder接口创建一个完整的产品对象,它负责管理 正确的对象创建顺序,从参数中接受具体的ConcreteBuilder对象,并 且执行这些对象的必要的操作 (4)Product 表示待创建的复杂对象,是ConcreteBuilder负责创建对象的内部 表示,并且定义组装过程
2.2生成器模式
生成器模式的概念:
生成器模式是将一个复杂对象的构建与它的表示分离,使得同样的构建过 程可以创建不同的表示。
生成器模式的机制:
生成器模式按照一个指定的过程逐步创建一个复杂的对象,它允许用户只 通过指定复杂对象的类型和内容就可以构建它们,而不必知道内部的具体 构建细节。其主要思想是抽象出创建对象的步骤,使得这些步骤的不同实 现可以创建对象的不同表示。 通常,生成器模式被用来创建符合组合模式的产品对象。 如:汽车。它由底盘、外壳、轮子、方向盘等组合。
生成器模式应用实例
某公司要设计一个房屋选购系统,系统内部 房屋分为2种类型:普通型与豪华型。不同 房型体现在面积大小以及卧室、卫生间、 车库、花园、和游泳池的数量上
• 房屋选购系统生成器模式设计图
• 房屋选购系统的时序图
• 时序图分析
首先,客户在界面上选择一个房屋类型(如: NormalHouse),就会创建一个NormalHose对象nb当 做参数,传给setHouseBuilder(nb) 然后,调用constructWholeHouseObj()发消息给 Director对象,要求Director按照它的其中一个 实现类NormalHoseBuilder的细节来创建一个完整 的House对象 最后,调用getHouse()发消息给Director对象, 要求获取创建好的House对象。
使用生成器模式的特点如下
(1)生成器让用户可以变化它建造产品的内部表达形式,它也隐藏了产 品怎样被装配的细节 (2)每个具体的生成器都独立于程序的其他生成器,因此完善了程序的 模块化,并且使添加其他生成器变得相对简单 (3)由于每个生成器根据数据逐步构建最终产品,用户对生成器构建的 最终产品有更多的控制 (4)生成器模式与抽象工厂模式有相似之处,都返回由其他一些对象组 成的类的对象。主要区别是,抽象工厂模式返回一个类族,而生成器 模式逐步按照次序构建一个复杂的对象,最后该对象被返回
Biblioteka Baidu
分析完以上两张图,就已经走完时序图的三 步了,现在来分析下创建House类的细节
下面,就是具体的生成器NormHouseBuilder类实现 内部具体的构造细节
客户在界面上选择普通房间的所有属性就是要创建 的House对象的细节,经过上面的分析,这些细节 部分全部设置完毕,并且得到了一个NormHouse对 象。 这样,就可以在界面右端显示得到的House对象的属 性。如下图