2.2 生成器模式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

11
例子
Director director = new Director(); director.setHouseBuilder( hb ); director.constructWholeHouseObj(); House hsObj = director.getHouse();
12
ห้องสมุดไป่ตู้周课程作业
10
例子
某公司要设计一个房屋选购系统,系统内的房屋分为两种类型:普通型(Normal House)与豪华型(Luxury House)。不同房屋型的区别体现在面积(Area)大小以 及卧室(Bedroom)、卫生间(Bathroom)、车库(Garage)、花园(Garden)和游 泳池(Swimming Pool)的数量上。根据用户的选择,本软件采用三个图形界面,供 用户具体选择房屋的各种指标。本程序采用生成器模式,设计图如图2.20所示。
软件设计模式与体系结构
2.2生成器模式
主讲教师:陈星 助教:曾雪娥、刘艳萍等 福州大学 数学与计算机科学学院 福建省网络计算与智能信息处理重点实验室
引言
汽车是一个比较复杂的对象,其组成包括底盘(Chassis)、外壳(Frame)、轮子 (Wheels)、发动机(Engine)、邮箱(GasTank)、加速器(Accelerater)、刹 车(Brake)、方向盘(SteeringWheel)、电池(Battery)、印象(Audio)、天 窗(Sunroof)、巡航控制(Cruise Control)、卫星导航系统(GPS),等等。
5
例子
某公司要设计一个房屋选购系统,系统内的房屋分为两种类型:普通型(Normal House)与豪华型(Luxury House)。不同房屋型的区别体现在面积(Area)大小以 及卧室(Bedroom)、卫生间(Bathroom)、车库(Garage)、花园(Garden)和游 泳池(Swimming Pool)的数量上。根据用户的选择,本软件采用三个图形界面,供 用户具体选择房屋的各种指标。本程序采用生成器模式。
2
引言
为了使构建复杂对象的过程和它的部件解耦,软件设计用一个类单独封装一个构造 对象的过程,该类被称为Director类;设计另外一个类负责产生符合某些条件的不 同部件类对象,称该类为CarBuilder类;另外还需要一个类封装产品,称之为Car。 生成器模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类 型和内容就可以构建它们,用户不知道内部的具体构建细节。构造Car对象的具体的 交互可以由时序图表示,如图2.18所示。
• 在例子的设计中,添加一个经济型房屋生成器类, 命名为EconHouseBuilder。请绘制新设计的类图。
13
6
例子
程序运行的主界面如图2.22所示。在图形界面的左上部,有“Choose House Type” 选择列表,在该选择列表中有Normal House 和 Luxury House选项。
7
例子
Noumal House 界面中新增的部分包含 Area、Bedroom number、Garage type 和 Garden type,每个选择都包含两个选项。
8
例子
Luxury House 界面中的房屋属性部分包含 Area、Bedroom number、Garage type 、 Garden type 和 Swimmingpool type,每个选择都包含两个选项。
9
例子
该房屋选购系统包含一个主用户图形界面,当程序运行时,根据用户的选择输入: Normal House或Luxury House,将把两个用户图形界面嵌入到主用户图形界面中, 供用户选择房屋的各项指标。最后,用户的选择信息将被同步显示到主图形界面的 文本框中。房屋选购系统的时序图如图2.21所示。
3
概念与机制
生成器模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建 不同的表示。生成器模式的设计类图如图2.19所示。
4
概念与机制
Director director = new Director(); director.setBuilder(cb); director.construct(); if ( cb == 1 ) Product1 = director.getObject(); else Product 2 = director.getObject();
相关文档
最新文档