创建型软件设计模式实验报告

实验项目名称:创建型软件设计模式

一、实验目的和要求
目的:对创建型设计模式中的工厂方法模式抽象工厂模式的机制与实现方法进行验证。
要求:在学习创建型设计模式原理的基础上,熟悉JAVA编程环境,掌握UML图的绘制,熟练掌握工厂方法模式和抽象工厂模式的应用场景,并能够对代码进行修改和完善。

二、实验环境
1、PC兼容机
2、Windows10系统

三、实验操作过程及实验结果记录
(一)工厂方法模式
1、作业要求:下面的类图表示工厂方法模式中的设计,用于查询不同类型的汽车保险的特征。有关以下类图的实现,请参阅源代码:
1)首先,在UML设计中,在AutoInsurance的类层次结构中添加一个类LuxeryCarInsurance。
2)类LuxeryCarInsurance与该类层次结构中的每个类具有相同的接口和方法。
3)编写一段文字描述新保险的内容。
4)然后,您需要在类层次结构中添加一个子类 PolicyProducer来创建类 LuxeryCarInsurance的对象。
5)最后,您需要修改客户端类FactoryMethodGUI,以允许新添加的保险单Luxery Car Insurance在客户端中显示。
在这里插入图片描述图1 工厂方法模式的设计类图

2、描述你已完成的作业,包括
1)哪些类已添加到现有类层次结构中?
LuxeryCarInsurance和PolicyProducer类已添加到现有类层次结构中。

2)现有类与新添加类之间的关系?
现有类与新添加类之间的关系为实现。

3)哪些代码被添加到哪个类中?
1.添加LuxeryCar:
在这里插入图片描述
2.添加LuxeryCarInsurance:
在这里插入图片描述
3.添加ClientGUI:
在这里插入图片描述

3、运行 ClientGUI 类,选择" Body Injur Liability ",然后单击"show Info"按钮。在此处列出按正确顺序调用的所有方法。

showInfo->GetActionCommand()->type.equals()->BobyPolicy()->BobyInjur()->getInfo()

4、在此处绘制新的类图

在这里插入图片描述
5、在您添加新的LuxeryCarInsurance类后,还更改了哪些其他类?此设计是否遵循开闭原则?为什么?

遵循开闭原则,开闭原则是对扩展开放,对修改关闭,此操作只是增加一个类,并没有修改其他内容。

6、(测试)运行程序,粘贴部分输入和输出结果。

在这里插入图片描述

(二)抽象工厂模式
1、作业要求:以下类图表示以抽象工厂模式进行设计,以查询不同类型建筑物的特征。有关以下类图的实现,请参阅源代码。
1)首先运行抽象工厂AbstractFactoryGUI以熟悉程序
2)在下面的设计中,添加一个名为SemiDetacher的类层次结构,其接口和方法与类层次结构House和类层次结构Condo相同。
3)然后,你需要修改类BuildingFactory及其子类中的相应部分,允许创建SemiDetacher子类的对象
4)实现修改后的类图,根据需要添加可能的代码。
5)在JComboBox中添加“SemiDetacher”,并在abstractFactoryGUI中显示。

在这里插入图片描述
图2 抽象工厂模式的设计类图

2、 描述已完成的家庭作业,包括
a) 哪些类已添加到现有类层次结构中?
SuperSemiDetacher,MediumSemiDetacher类已添加到现有层次结构中。

b) 现有类与新添加类之间的关系。
MediumBuildingFactory与SuperSemiDetacher和MediumSemiDetacher类之间的关系为关联。

3、 在此处绘制新的类图请添加图片描述

4、 添加所需的SemiDetacher层次结构后,
a) BuildingFactory 类层次结构中的哪些类受到了影响?

SuperBuildingFactory与MediumBuildingFactory类受到了影响

b) 在类层次结构中添加了哪些方法?

在BuildingFactory,SuperBuildingFactory,MediumBuildingFactory类层次结构中添加了getSemiDetacherInfo方法。
5、 用不超过120个字的篇幅讨论工厂方法模式与抽象工厂模式的异同。

工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习使我哈皮!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值