软件设计模式与体系结构课程作业Word文档下载推荐.docx
- 文档编号:13067873
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:34
- 大小:209.69KB
软件设计模式与体系结构课程作业Word文档下载推荐.docx
《软件设计模式与体系结构课程作业Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《软件设计模式与体系结构课程作业Word文档下载推荐.docx(34页珍藏版)》请在冰豆网上搜索。
实验四 17
策略模式——整数排序 17
状态模式——交通信号灯 19
实验五 21
MVC软件体系结构 21
实验一
工厂方法模式——汽车保险
【实验内容】
在例2.3的汽车保险管理应用程序实例上添加一个名为LuxuryCarInsurance的类,并且,该类要与其他的类一样能执行相应的功能。
【添加代码】
1、添加LuxuryCarInsurance类:
publicclassLuxuryCarInsuranceimplementsAutoInsurance
{
privateStringdescription;
publicStringgetInsuranceDescription()
{
description="
LuxuryCarInsurance:
\n\nLuxuryCarInsurancecoveragepays
formedicalbills"
+
"
lostwages,rehabilitation,treatmentand/or"
funeralcostsforanyoneinjuredorkilled"
byyourcar.Suchcoveragewillalsopayfor"
painandsufferingdamageswhenathird"
partysuccessfullysues."
;
returndescription;
}
}
2、添加LuxuryCarPolicyProducer类:
publicclassLuxuryCarPolicyProducerimplementsPolicyProducer
publicAutoInsurancegetPolicyObj()//Fruitfactory()
returnnewLuxuryCarInsurance();
3、添加GUI:
(1)publicstaticfinalStringLUXURYCAR="
LuxuryCarInsurance"
(2)cmbInsuranceType.addItem(LUXURYCAR);
(3)if(type.equals(LUXURYCAR)){
pp=newLuxuryCarPolicyProducer();
}
【实验结果】
【实验小结】
使用工厂方法访问并且初始化合适的类的对象,简化了应用程序,应用程序本身不再含有大量的条件语句判定何时选取哪个类。
其次,工厂方法实现了一些特殊的某个类的机制,尤其是层次结构不同的类需要不同的初始化方法的时候。
抽象工厂方法模式——房屋信息
在例2.4中设计并且实现了豪华(Super)和中等(Medum)别墅(House)和公寓(Condo)的查询。
要求在该设计的基础上,增加一个新的类SemiDetacher(半独立式楼宇),并且编写代码实现相应的查询功能。
1、添加SemiDetacher类:
publicinterfaceSemiDetacher
{
publicStringgetSemiDetacherInfo();
publicStringgetSemiDetacherFeatures();
}
2、添加SuperSemiDetacher类:
publicclassSuperSemiDetacherimplementsSemiDetacher
privateStringname;
publicSuperSemiDetacher(StringcName)
{
name=cName;
}
publicStringgetSemiDetacherInfo()
return"
superSemiDetacher.html"
}
publicStringgetSemiDetacherFeatures()
{
SuperSemiDetacher"
3、添加MediumSemiDetacher类:
publicclassMediumSemiDetacherimplementsSemiDetacher
privateStringname;
publicMediumSemiDetacher(StringcName)
{
}
publicStringgetSemiDetacherInfo()
MediumSemiDetacher.html"
}
publicStringgetSemiDetacherFeatures()
{
MediumSemiDetacher"
4、添加BuildingFactory:
publicabstractSemiDetachergetSemiDetacher();
5、添加MediumBuildingFactory:
publicSemiDetachergetSemiDetacher()
returnnewMediumSemiDetacher("
MediumSemiDetacher"
);
6、添加SuperBuildingFactory:
publicSemiDetachergetSemiDetacher()
{
returnnewSuperSemiDetacher("
SuperSemiDetacher"
7、添加GUI:
(1)publicstaticfinalStringSEMIDETACHER="
SemiDetacher"
(2)cmbHouseType.addItem(SEMIDETACHER);
(3)if(type.equals(AbstractFactoryGUI.SEMIDETACHER)){
SemiDetachercd=bf.getSemiDetacher();
StringfileNm=cd.getSemiDetacherInfo();
putHouseInfoToScreen(fileNm);
当客户对象要从一个相关的产品组中创建一个对象,而没有必要知道到底要创建哪个对象时,可以使用抽象工厂模式。
如果不使用抽象工厂模式,创建对象的条件语句将会出现在客户程序的许多地方,程序的克维护性差。
抽象工厂模式帮助程序员避免了以上所述的重复的、复杂的条件语句,提供必要的创建对象的接口。
实验二
组合模式——空军指挥系统
在例3.3的设计中,添加一个空军大队(Wing)类,该类与Squadron、Group类是平行的,因此应该继承了AirUnit类。
该类的写法与Squadron或者Group类是类似的,所不同的是一个Wing有216中类型的飞机。
1、添加Wing类:
publicclassWingextendsAirUnit{
publicstaticfinalStringFEATURES="
AWingwith216aircrafts"
Airforce[]fighters=newAirforce[162];
Airforce[]bombers=newAirforce[18];
Airforce[]transporters=newAirforce[18];
Airforce[]eAircrafts=newAirforce[18];
publicWing(){
for(intk=0;
k<
162;
k++){
//need162fighters
}
18;
//need18bombers
//need18transporters
//need18eAirplanes
}
publicStringgetDescription(){
returnFEATURES;
publicStringfight(){
returnsuper.fight();
2、添加GUI:
(1)privateString[]AirForceUnit={"
SQUADRON"
"
GROUP"
WING"
};
(2)add(1,6,airCheckBox[13
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 模式 体系结构 课程 作业