软件设计模式与体系结构
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件设计模式与体系结构
————————————————————————————————作者:————————————————————————————————日期:
ﻩ
计算机科学与技术学院
《软件设计模式与体系结构》
课程作业(一)
(2016/2017学年第二学期)
学生姓名:雷君
学生专业:软件工程
学生班级:142601
学生学号: 2
指导教师:王飞
目录
实验一.............................................. 1工厂方法模式——汽车保险 (1)
抽象工厂方法模式——房屋信息 (3)
实验二6ﻩ
组合模式——空军指挥系统 (6)
适配器模式——客户信息验证................................................ 错误!未定义书签。实验三. (11)
桥接模式——几何立体体积ﻩ错误!未定义书签。
访问者模式——计算机部件销售软件................................................................ 14 实验四. (17)
策略模式——整数排序1ﻩ7
状态模式——交通信号灯ﻩ19
实验五............................................. 21 M VC软件体系结构.. (21)
实验一
工厂方法模式——汽车保险
【实验内容】
在例2.3的汽车保险管理应用程序实例上添加一个名为LuxuryCarInsurance的类,并且,该类要与其他的类一样能执行相应的功能。
【添加代码】
1、添加LuxuryCarInsurance类:
public classLuxuryCarInsurance implements AutoInsurance
{
private String description;
public String getInsuranceDescription()
{
ﻩdescription =" LuxuryCarInsurance:\n\nLuxuryCarInsurance coverage pays
for medical bills" +
" lost wages, rehabilitation,treatmentand/or" +
ﻩ" funeral costs for anyone injured or killed" +ﻩ" byyour car. Such coverage will alsopay for" +
" pain and suffering damages when a third "+
"partysuccessfully sues. ";
return description;
}
}
2、添加LuxuryCarPolicyProducer类:
public class LuxuryCarPolicyProducer implements PolicyProducer
{
public AutoInsurance getPolicyObj()//Fruitfactory()
{
return new LuxuryCarInsurance();
}
}
3、添加GUI:
(1)public static final String LUXURYCAR ="LuxuryCar Insur ance";
(2)cmbInsuranceType.addItem(LUXURYCAR);
(3)if (type.equals(LUXURYCAR)){
ﻩpp=new LuxuryCarPolicyProducer();
}
【实验结果】
【实验小结】
使用工厂方法访问并且初始化合适的类的对象,简化了应用程序,应用程序本身不再含有大量的条件语句判定何时选取哪个类。其次,工厂方法实现了一些特殊的某个类的机制,尤其是层次结构不同的类需要不同的初始化方法的时候。
抽象工厂方法模式——房屋信息
【实验内容】
在例2.4中设计并且实现了豪华(Super)和中等(Medum)别墅(House)和公寓(Condo)的查询。要求在该设计的基础上,增加一个新的类SemiDetacher(半独立式楼宇),并且编写代码实现相应的查询功能。
【添加代码】
1、添加SemiDetacher类:
public interface SemiDetacher
{
public String getSemiDetacherInfo();
ﻩpublicString getSemiDetacherFeatures();
}
2、添加SuperSemiDetacher类:
public classSuperSemiDetacherimplementsSemiDetacher
{
privateString name;
public SuperSemiDetacher(String cName)
ﻩ{
ﻩname =cName;
ﻩ}
public StringgetSemiDetacherInfo()
ﻩ{
return"superSemiDetacher.html";
ﻩ}
public String getSemiDetacherFeatures()
{
ﻩreturn"SuperSemiDetacher";
}
}
3、添加MediumSemiDetacher类:
public classMediumSemiDetacher implementsSemiDetacher
{