抽象工厂和建造者模式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验8 抽象工厂和建造者模式
一、实验目的
1、掌握抽象工厂模式的概念、模式结构、适用场景、优点和缺点。
3、掌握建造者模式的概念、模式结构、适用场景、优点和缺点。
二、实验环境
Windows操作系统,Rational Rose,eclipse、Myeclipse ,VS Studio,记事本等等。
三、实验内容
1、抽象工厂模式:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定它们的具体类。
抽象工厂的模式图如下所示。模式中包含4个角色,抽象工厂、具体工厂、抽象产品和具体产品。
题目描述:我们在上一节讲了女娲造人的故事。人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类的生命太平淡了,女娲一想,猛然一拍脑袋,记给人类定义性别了,那怎么办?
由于女娲之前的准备工作花费了非常大的精力,比如准备黄土,准备八卦炉等,从头开始建立所有的事物也是不可能的,那就想在现有的条件下重新造人,尽可能旧物利用嘛。怎么才能让人类有爱有恨呢?是神仙当然办法的了,定义互斥的性别,然后在每个个体中埋下一颗种子:异性相吸,成熟后就一定会去找个异性(这就是我们说的爱情原动力)。从设计角度来看,一个具体的对象通过两个坐标就可以确定:肤色和性别。
产品类分析完毕了,生产的工厂类该(八卦炉)怎么改造呢?只有一个生产设备,要么生产出全都是男性,要么都是女性,那不行呀,这么大的翻天覆地的改造就是为了产生不同性别的人类。有办法了!把目前已经有的生产设备——八卦炉拆开,于是女娲就使用了“八卦拷贝术”,把原先的八卦炉一个变两个,并且略加修改,就成了女性八卦炉(只生产女性人种)和男性八卦炉(只生产男性人种),于是乎女娲就开始准备生产了。根据描述,请使用抽象工厂模式,画出UML类图,实现题目描述的功能。
UML类图:
代码Human.java
WhitePeople.java
YellowPeople.java
MaleBlack.java
FemaleWhite.java
MaleWhite.java
FemaleYellow.java
MaleYellow.java
HumanFactory.java
FemaleFactory.java
MaleFactory.java
2、建造者模式应用:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
建造者模式的通用类图:
在建造者模式中,有如下四个角色:
Product 产品类:具体产品。
Builder 抽象建造者:是为创建一个Product对象的各个部件指定的抽象接口。ConcreteBuilder具体建造者:实现Builder接口,构造和装配各个部件。Director 指挥者:用来根据用户的需求构建对象。
题目描述:
产品:不同风格的house,有中式house、欧式house等,(假设在house类中建立一个私有的String类型的字段来描述house的风格),试用Builder模式建造中式house和欧式house。并创建客户端,建造一所中式house和一所欧式house,并输出house的风格。(Builder模式典型UML类图如下)
代码:
House.java
Bulider.java
BuildEurope.java
BuildChinese.java
Director.java
Client.java
1.要求:在该文档中,直接在相应题目下面,根据要求,给出相应的UML图
和功能实现的代码。其中可以采用Java、C#、C++等实现。
2.上传文件格式要求:学号+姓名+第9周.doc