软件设计模式.docx
- 文档编号:16494644
- 上传时间:2023-07-14
- 格式:DOCX
- 页数:19
- 大小:287.28KB
软件设计模式.docx
《软件设计模式.docx》由会员分享,可在线阅读,更多相关《软件设计模式.docx(19页珍藏版)》请在冰点文库上搜索。
软件设计模式
课程设计说明书
课程名称:
软件设计
设计题目:
院系:
计算机科学与信息工程学院
学生姓名:
学号:
专业班级:
软件工程11-1
指导教师:
2014年6月
课程设计任务书
设计题目
手机生产与销售
学生姓名
所在院系
计算机科学与信息工程学院
专业、年级、班
软件工程11-1
设计要求:
1.设计一个应用场景,最少使用所学过的三种设计模式解决一个实际问题。
2.应用场景设计要合理,模式选择要适当。
学生应完成的工作:
1.应用场景:
周末,大家一般选择出去游玩,先是精心打扮一下,然后选择出行方式,最后选择做什么()这里是就餐),这样,本策略应用而生。
2.设计模式:
工厂模式、建造者模式、原型模式、策略模式。
(1)工厂模式:
解决就餐方案选择问题。
(2)原型模式:
觉得好吃,继续点一份。
(3)建造者模式:
出发前选择穿什么样的衣服、鞋子等服饰。
(4)策略模式:
选择出行方式。
3.实现代码:
代码由java语言实现。
参考文献阅读:
[1]徐宏喆,侯迪等著,实用软件设计模式教程,清华大学出版
[2]程杰著,大话设计模式,清华大学出版
[4]甄镭著,.net与设计模式,电子工业出版社
[5][美]AlanShalloway著,设计模式精解,清华大学出版社
[6]莫永腾著,深入浅出设计模式,清华大学出版社
工作计划:
1.审题,查阅资料,进行设计前的必要资料准备(3天)。
2.把程序完整运行出来(4天)。
3.增加改进程序(3天)。
4.写课程设计报告(3天)。
5.提交课程设计报告(1天)。
任务下达日期:
2014年6月9日
任务完成日期:
2014年6月22日
指导教师(签名):
学生(签名):
目录
一、系统目标1
1.设计目的1
2.需求描述1
二、系统模式选择1
1.需求分析1
2.选用设计模式1
2.1工厂模式2
2.2建造者模式2
2.3原型模式3
2.4策略模式4
三、系统设计4
1.系统功能模块设计4
2.系统模块类图5
3.系统控制函数5
四、系统实现6
1.工厂模式6
2.原型模式8
3.建造者模式9
4.策略模式12
五、系统设计总结13
1.实现的功能和优点13
2.不足之处和改进方向14
3.完成心得14
六、参考文献14
1、系统目标
1.设计目的
设计模式的提出,是面向对象程序设计演化过程中一个重要的里程碑,设计模式使得人们可以更加简单和方便地去复用成功的软件设计和体系结构,从而能够帮助设计者更快更好地完成系统设计。
希望通过本次课程设计,可以更加了解设计模式的概念、设计模式的基本要素、设计模式的原则和设计模式的类型,以及各种设计模式的特点和适用情形,会根据不同的场景去灵活运用各种模式,加深对软件设计课程的理解。
通过运用设计模式来解决实际系统中遇到的问题,巩固所学的理论知识,提高程序设计能力,从而具备利用计算机编程分析解决综合性实际问题的初步能力。
2.需求描述
周末的时候大家一般出去玩,然后吃点好的东西,这样,可以分为好几个步骤,首先,选择穿什么样的衣服,然后选择选择什么样的出行方式,最后选择吃什么样的东西。
虽然这是一个很简单的问题,如果能用设计模式的思想将这个简单的问题抽象化,这样会对我们了解设计模式非常有帮助。
本次课程设计选择了“旅游策略”,应用所学到的四种设计模式来解决问题,将设计模式的具体内容与实际的问题相结合,实现系统的相应功能。
系统中总共用到四种设计模式,分别是工厂模式、原型模式、建造者模式和策略模式。
二、系统模式选择
1.需求分析
工厂模式通过面向对象的方法,将所创建的具体对象的创建工作延迟到了子类,较好的解决了紧耦合的关系,工厂模式用来解决怎么很快的生产出来顾客要求的食品。
原型模式对客户隐藏了具体的产品类,减少了客户知道的名字数目,原型模式用来解决再点一份食品的问题。
建造者模式实现代码和表示代码的分开,主要解决选择什么样的衣服搭配方式,而不必考虑怎么搭配衣服。
策略模式是算法的动态选择,策略模式主要解决了选择什么样的出行方式,而不必关心方式到底有什么变化。
2.选用设计模式
根据需求分析,该旅游策略可以采用了四种设计模式,分别是工厂模式、原型模式、策略模式和建造者模式
2.1工厂模式
工厂模式是一种创建型设计模式,工厂模式通过面向对象的方法,将所创建的具体对象的创建工作延迟到了子类,较好的解决了紧耦合的关系。
通过定义一个IKFCFactory接口,产品的创建都是由具体的工厂来完成的,每个工厂只负责一种产品的创建,各个子工厂之间相互独立、职责明确。
模式结构图如图2-1:
图2-1外观模式结构图
2.2建造者模式
建造者模式是一种创建型设计模式,采用建造者模式的主要原因是它将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。
该模式主要解决穿什么分格的衣服。
模式结构图如图2-2:
图2-2建造者模式结构图
2.3原型模式
原型设计模式是一种创建型设计模式,它关注的是大量相同或相似对象的创建问题,应用原型模式就是先建立一个原型,然后通过对原型进行复制和修饰的方法,来产生和一个原型相同或相似的新对象。
采用原型模式主要是解决点一份相同的食品的问题。
模式结构图如图2-3:
图2-3原型模式结构图
2.4策略模式
策略模式是一种行为模式,主要体现了算法的动态选择,策略模式可以提供相同行为的不同实现,客户可以根据不同的上下文中的策略方法选中不同的算法。
策略模式主要解决了出行方式的选择,模式结构图如图2-4
图2-4原型模式结构图
3、系统设计
1.系统功能模块设计
a:
工厂模式,快速生产消费者点的产品
b:
原型模式,克隆生产同一种产品。
c:
建造者模式,选择不同风格的服饰。
d:
策略模式,选择不同的出行方式。
图3-1系统流程图
2.系统模块类图
图3-2系统模块类图
3.系统控制函数
publicstaticvoidmain(String[]args){
Mannera=newMannerA();
Peopler1=newPeople(a);
r1.choose();
System.out.println("他今天心情不错,精心打扮了一下,他挑选了");
Builderb1=newPerformA();
r1.construct(b1);
ClothesBlue=b1.getClothes();
Blue.show();
System.out.println("看完了电影,他觉着有点饿,所以想去KFC吃个鸡腿");
r1.display();
System.out.println("他发现实在是太好吃了,并且肚子还饿着,又点了一个");
r1.copy();
}
4、系统实现
1.工厂模式
外观模式主要包括KFCFood类、Chicken类、Wings类、IKFCFactory接口、ChickenFactory类和WingsFactory类,IKFCFactory常用来创建一个生产具体产品的工厂。
//工厂模式
publicabstractclassKFCFood{
publicabstractvoidshow();
}
publicclassChickenextendsKFCFoodimplementsCloneable{
publicvoidshow(){
System.out.print("要一个鸡腿");
}
publicObjectclone()throwsCloneNotSupportedException{
return(Object)super.clone();
}
publicclassWingsextendsKFCFoodimplementsCloneable{
publicvoidshow(){
System.out.println("要一个鸡翅");
}
publicObjectclone()throwsCloneNotSupportedException{
return(Object)super.clone();
}
publicinterfaceIKFCFactory{
KFCFoodcreateFood();
}
publicclassChickenfactoryimplementsIKFCFactory{
publicKFCFoodcreateFood(){
returnnewChicken();
}
}
publicclassWingsfactoryimplementsIKFCFactory{
publicKFCFoodcreateFood(){
returnnewWings();
}
}
图4-1工厂模式测试
2.原型模式
原型模式主要包括Chicken类、Wings类、以及People类,people类中重写clone方法,下面是主要代码。
publicclassChickenextendsKFCFoodimplementsCloneable{
publicvoidshow(){
System.out.print("要一个鸡腿");
}
publicObjectclone()throwsCloneNotSupportedException{
return(Object)super.clone();
}
publicclassWingsextendsKFCFoodimplementsCloneable{
publicvoidshow(){
System.out.println("要一个鸡翅");
}
publicObjectclone()throwsCloneNotSupportedException{
return(Object)super.clone();
}
publicclassPeople{
privateMannermanner;
publicPeople(Mannermanner){
this.manner=manner;
}
publicvoidcopy()throwsCloneNotSupportedException{
Chickenc1=newChicken();
Chickenc2=newChicken();
c2=(Chicken)c1.clone();
c2.show();
}
}
图4-2原型模式测试
3.建造者模式
建造者模式主要包括Clothes类、Builder类、PerformA类、PerformB类和指挥者People类,PerfromA和PerformB实现了Builder的抽象方法,People类new出一个Builder对象,通过动态绑定完成相应的操作。
建造者模式主要实现了选择穿什么风格的服饰这一问题。
下面是主要代码:
publicabstractclassBuilder{
publicabstractvoidaddShoes();
publicabstractvoidaddTshirt();
publicabstractvoidaddPants();
publicabstractClothesgetClothes();
}
publicclassClothes{
ArrayListlist=newArrayList();
publicvoidadd(Stringpart){
list.add(part);
}
publicvoidshow(){
for(inti=0;i System.out.println(list.get(i)); } } } publicclassPerformAextendsBuilder{ privateClothesBlue=newClothes(); publicvoidaddShoes(){ System.out.print("一双白色的运动鞋"); } publicvoidaddTshirt(){ System.out.print("和一件黄色的短袖"); } publicvoidaddPants(){ System.out.print("一条Jeans牌牛仔裤、"); } publicClothesgetClothes(){ returnBlue; } } publicclassPerformBextendsBuilder{ privateClothesred=newClothes(); publicvoidaddShoes(){ System.out.println("一双白色的皮鞋"); } publicvoidaddTshirt(){ System.out.println("一件白色的衬衫"); } publicvoidaddPants(){ System.out.println("一条红色的裤子"); } publicClothesgetClothes(){ returnred; } } Publicclass{ publicvoidconstruct(Builderbuilder){ builder.addPants(); builder.addShoes(); builder.addTshirt(); } } 图4-3建造者模式测试 4.策略模式 策略模式主要包括Manner类、MannerA类、MannerB类,MannerA和MannnerB实现了Manner的ConcreteManner类 publicabstractclassManner{ publicManner(){ } publicabstractvoidconcreteManner(); } publicclassMannerAextendsManner{ publicMannerA(){ } publicvoidconcreteManner(){ System.out.print("星期天,小明坐公交车去市区玩"); } } publicclassMannerBextendsManner{ publicMannerB(){ } publicvoidconcreteManner(){ System.out.println("打的去"); } } 图4-5策略模式测试 五、系统设计总结 1.实现的功能和优点 该系统主要实现了选择什么样的出行方式,穿什么风格的衣服,饭馆怎么快速的生产所需的产品。 运用的设计模式有工厂模式,原型模式,建造者模式和策略模式。 使用外观模式实现了子系统组件对客户的屏蔽,因而减少了客户处理的对象数目并且使子系统使用起来更加方便;建造者模式使得产品的内部表象可以独立地变化,客户不知道产品内部的细节,每一个Builder都相互独立,而与其他的Builder无关,构建的代码与表示代码分开; 该管理系统的优点就是基本实现了选择的不同功能,程序简单易懂,代码的复用率高,合理的运用了四种设计模式,各个模块的层次结构都比较清晰,如果想要添加新的模块,不需要更改很多代码,直接在原有代码基础上进行继承实现就行,减少了开发成本。 2.不足之处和改进方向 不足之处就是在本系统中功能只是在控制台简单的输出,没有用界面显示出来。 功能也不是很完善,有些具体细节还为达到要求,使用的设计模式也比较少,每个模块的功能还可以进一步完善和加强。 改进方向: 可以做成带系统界面,使用户使用起来更加简单方便快捷。 3.完成心得 虽然花费了一些时间,但是学到了很多东西,通过设计和实现此系统,初步掌握了面向对象程序设计的基本思维,以及设计模式的特点和使用情形,了解了设计模式的原则即单一职责原则、开放封闭原则、里氏代换原则和依赖倒置原则。 要想程序的复用性高,后期维护方便就必须在进行设计的时候,采用合适的设计模式,将具体类的抽象出来,较好的提高系统的可扩展性。 在模式设计上,主要还是得理解各个模式的基本思想和特点,以及各个模式的各种适用场景,针对具体的场景然后采用相应的设计模式进行设计,开发、编码、实现和测试。 通过设计模式的运用更加深入的理解了设计模式的思想。 实训期间,学到了很多东西,不仅使我在理论上对软件设计课程有了全新的认识,在实践能力上也得到了提高,真正地做到了学以致用,对我来说受益非浅。 除此以外,我还学会了如何更好地与别人沟通,如何更好地去陈述自己的观点,如何说服别人认同自己的观点。 这次实训对于我以后学习、找工作也真是受益菲浅,在这短短的几天中相信这些宝贵的经验会成为我今后职业道路的重要的基石。 6、参考文献 参考文献 [1]实用软件设计模式教程,徐宏喆,侯迪等著,清华大学出版 [2]大话设计模式,程杰著,清华大学出版 [3]设计模式精解,[美]AlanShalloway,著清华大学出版社 [4]深入浅出设计模式,莫永腾著,清华大学出版社 [5]面向对象技术,邓正宏,薛静,郑玉山著,国防工业出版社 指导教师评语: 1、课程设计报告: a、内容: 不完整□完整□详细□ b、方案设计: 较差□合理□非常合理□ c、实现: 未实现□部分实现□全部实现□ d、文档格式: 不规范□基本规范□规范□ 2、考勤: 全勤□缺勤次 课程设计报告成绩: ,占总成绩比例: 80% 考勤成绩: ,占总成绩比例: 20% 总成绩: 指导教师签字: 年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 模式