生成器模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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对象的属 性。如下图
相关文档
最新文档