软件设计模式大作业样例.doc

上传人:豆**** 文档编号:28510823 上传时间:2022-07-28 格式:DOC 页数:26 大小:569.50KB
返回 下载 相关 举报
软件设计模式大作业样例.doc_第1页
第1页 / 共26页
软件设计模式大作业样例.doc_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《软件设计模式大作业样例.doc》由会员分享,可在线阅读,更多相关《软件设计模式大作业样例.doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date软件设计模式大作业样例课程设计要求设计模式大作业课程名称: 软件设计模式 设计题目:公司经费申请 院 系: 计算机科学与信息工程学院 学生姓名: 学 号: 专业班级: 软件工程13-1 指导教师: 高 原 2016年6月软 件 设 计 模 式 任 务 书设计题目公司经费申请学生姓名 所在院系计算机科学与信息工程学院专业、年级、班软件工程13-1设计要求:1设计一个应用

2、场景,最少使用所学过的三种设计模式解决一个实际问题。一人一题,不可重复。2应用场景设计要合理,模式选择要适当。3要求给出系统模式结构图,主要类的设计代码。4编写验证程序,在验证程序中要在显著位置显示个人信息。学生应完成的工作:1. 应用场景:公司经费申请,可以了解申请经费的具体流程,由申请人先填写申请单,然后交给领导审批,如果申请批准下来,领导会通知申请人审批通过,然后申请人去财务领取费用,如果没有批准下来,领导会通知申请人审批未通过。不同级别的领导,对于审批的额度是不一样的,比如,项目经理只能审批500元以内的申请;部门经理能审批1000元以内的申请;而总经理可以审核3000元以内的申请,否

3、则不通过。2. 设计模式:模板方法模式,职责链模式,观察者模式。 (1)模板方法模式:定义了一个操作中算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 (2)职责链模式:不同级别的领导,对于审批的额度不一样,使其各自的职责权限更加清晰明了。 (3)观察者模式:一个对象状态发生改变时,其相应依赖对象得到通知并自动更新。3. 实现代码: 使用java语言实现所有功能。参考文献阅读:1 徐宏喆,侯迪等编著,实用软件设计模式教程M,清华大学出版社。2 颜炯编著,C#设计模式M,中国电力出版社。3 程杰,大话设计模式,北京:机械工业出版社,2008。

4、4 设计模式可复用面向对象软件的基础,北京:机械工业出版社。5 美Alan Shalloway著,设计模式精解M,清华大学出版社。工作计划:1. 审题,查阅资料,进行设计前的必要资料准备(3天)。2. 把程序完整运行出来(4天)。3. 增加改进程序(3天)。4. 写课程设计报告(3天)。5. 提交课程设计报告(1天)。任务下达日期: 2015 年 6 月 9 日 任务完成日期: 2015 年 6 月 22 日指导教师(签名): 高原 学生(签名): 代小雪目录一、 系统目标11. 设计目的12. 需求描述1二、系统模块选择11. 需求分析12. 选用设计模式2(1)模板方法模式2(2)职责链模

5、式2(3)观察者模式3三、 系统设计41. 系统功能模块设计4四、 系统实现51.模板方法模块及其实现类52.职责链模块及其实现类63.观察者模块及其实现类94.事件处理程序10五、 系统设计总结111. 实现的功能和优点112. 不足之处123. 完成心得12六、 参考文献12参考文献12-一、 系统目标1. 设计目的通过本课程设计,加深对软件设计课程的理解,熟练掌握和巩固所学的各种设计模式,培养自我动手、查阅技术文献、资料、手册以及编写技术文献的能力。通过运用设计模式来解决实际系统中遇到的问题,从而具备利用计算机编程分析解决综合性实际问题的初步能力。2. 需求描述 本系统的主要目的在与应用

6、设计模式解决公司经费申请问题,可以了解申请经费的具体流程为申请人先填写申请单,然后交给领导审批,如果申请批准下来,领导会通知申请人审批通过,然后申请人去财务领取费用,财务部给于其拨款,如果没有批准下来,领导会通知申请人审批未通过。不同级别的领导,对于审批的额度是不一样的,比如,项目经理只能审批500元以内的申请;部门经理能审批1000元以内的申请;而总经理可以审核3000元以内的申请,否则不通过。系统中总共用到三种设计模式,分别是模板方法模式,职责链模式,观察者模式。 模板方法模式定义了一个操作中算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步

7、骤。申请经费的具体流程是固定的,写申请单,审核,得到通知这三个过程,只是审核过程不同。职责链模式鉴于不同级别的领导,对于审批的额度是不一样,使其各自的职责权限更加清晰明了。观察者模式是一种一对多依赖关系,一个对象状态发生改变时,其相应依赖对象得到通知并自动更新。二、 系统模块选择1. 需求分析根据问题的描述,可以确定系统的大致业务逻辑。如下:需要申请活动费用,按照固定工作流程进行申请,给出申请金额,由领导根据各自的职责权限进行审核,并将结果告知申请人,财务部根据结果给予拨款。将结果返回到客户端,呈现给用户。2. 选用设计模式根据需求分析,该公司经费申请可以采用到三种设计模式,分别是模板方法模式

8、,职责链模式,观察者模式。(1) 模板方法模式采用模板方法模式的原因是它定义了一个操作中算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。公司申请活动经费的流程是固定的,由申请人先填写申请单,然后交给领导审批,最后得到审批结果,作出相应行动。用模板方法模式使其结构清晰,提高了代码的复用性。模式结构图如图1-1:图1-1 模板方法模式结构图(2)职责链模式采用职责链模式的主要原因是对于审核经费申请单,由上级领导进行处理,而不同级别的领导,对于审批的额度是不一样的。职责链模式避免请求发送者和接收者耦合在一起,将这些对象连接成一条链,并且沿着这条链

9、传递请求,直到有对象处理它为止。这样降低了耦合度,简化对象的相互连接,增强给对象指派职责的灵活性。模式结构图如图1-2:图1-2职责链模式结构图(3)观察者模式采用观察者模式的主要原因是可以实现表示层和数据逻辑层的分离,并定义可稳定的消息更新传递机制,抽象了更新接口。在观察目标和观察者之间建立一个抽象的耦合。模式结构图如图1-3:图1-3观察者模式结构图三、 系统设计1. 系统功能模块设计根据需求分析,公司经费申请可分为三个模块,主要如下:u 申请人填写经费申请单:向上级领导提交申请。u 领导审核:根据职责权限不同,按各自的管理范围一一送派审核。u 收到审核结果通知:收到上级领导对经费申请单批

10、准与否的信息。 公司经费申请填写经费申请单领导审核收到审核结果图2-1 公司经费申请模块四、 系统实现1. 模板方法模式和其实现类模板方法模式贯穿在整个系统中,公司经费申请由三个具体部分组成,填写申请单,经领导审批,最后接收到通知。模板方法模式贯穿整个工作模块,实现代码如下:public abstract class ApplicationForFunds public void apply()System.out.println(填写申请单);public abstract void toExamine();public void evaluate()System.out.println(得

11、到通知); public void process() this.apply(); this.toExamine(); this.evaluate(); public class ActivityFund extends ApplicationForFundspublic void toExamine()System.out.println(活动经费);public class ProjectFund extends ApplicationForFundspublic void toExamine()System.out.println(项目经费);2. 职责链模式和其实现类职责链模式避免请求

12、发送者和接收者耦合在一起,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。主要解决的是上级领导中的那个具体人来实现审核工作。职责链模式来完成领导审核模块,实现代码如下:public abstract class Leaderprotected String name;protected Leader successor;public Leader(String name)this.name=name;public void setSuccessor(Leader successor)this.successor=successor;public abstract void

13、 handleRequest(Funts request);public class DivisionManager extends Leaderpublic DivisionManager(String name)super(name);public void handleRequest(Funts request)if(request.getMoney()1000)System.out.println(部门经理 + name + 审批 + request.getReplyName() + 员工的活动经费,经费为 + request.getMoney() + 元。可去财务部领取费用。);el

14、seif(this.successor!=null)this.successor.handleRequest(request);public class GeneralManager extends Leaderpublic GeneralManager(String name)super(name);public void handleRequest(Funts request)if(request.getMoney()3000)System.out.println(总经理 + name + 审批员工 + request.getReplyName() + 员工的活动经费,经费为 + requ

15、est.getMoney() + 元。可去财务部领取费用。);elseSystem.out.println( request.getReplyName() + 员工的活动经费为 + request.getMoney() + 元,由于其经费要求太高将不予批准!);public class ProjectManager extends Leader public ProjectManager(String name)super(name);public void handleRequest(Funts request)if(request.getMoney()500)System.out.prin

16、tln(项目经理 + name + 审批 + request.getReplyName() + 员工的活动经费,经费为 + request.getMoney() + 元。可去财务部领取费用。);elseif(this.successor!=null)this.successor.handleRequest(request);public class Funtsprivate String replyName;private int money;public Funts(String replyName,int money)this.replyName=replyName;this.money=

17、money;public void setReplyName(String replyName) this.replyName = replyName; public void setMoney(int money) this.money = money; public String getReplyName() return (this.replyName); public int getMoney() return (this.money); 3. 观察者模式和其实现类观察者模式可以实现表示层和数据逻辑层的分离,并定义可稳定的消息更新传递机制,抽象了更新接口。在观察目标和观察者之间建立一个

18、抽象的耦合。观察者模式来完成接收到审核通知模块,实现代码如下:import java.util.*;public abstract class MySubjectprotected ArrayList observers = new ArrayList();/注册方法public void attach(MyObserver observer)observers.add(observer); /注销方法public void detach(MyObserver observer)observers.remove(observer);public abstract void pass(); /抽

19、象通知方法public interface MyObservervoid response(); /抽象响应方法public class Check extends MySubjectpublic void pass()System.out.println(审核通过!);System.out.println(-);for(Object obs:observers)(MyObserver)obs).response();public class ApplyPeople implements MyObserverpublic void response()System.out.println(申请

20、人去财务部领取资金!);public class GiveFunt implements MyObserverpublic void response()System.out.println(财务部拨给申请人相应资金!);4. 事件处理程序事件处理程序的代码如下:public class Clientpublic static void main(String a)Leader objProjectManager,objDivisionManager,objGeneralManager;ApplicationForFunds bank;bank=(ApplicationForFunds)XML

21、Util.getBean();bank.process();System.out.println(-);objProjectManager=new ProjectManager(王明);objDivisionManager=new DivisionManager(赵强);objGeneralManager=new GeneralManager(李波);objProjectManager.setSuccessor(objDivisionManager);objDivisionManager.setSuccessor(objGeneralManager);Funts lr1=new Funts(第

22、一小组,450);objProjectManager.handleRequest(lr1);Funts lr2=new Funts(第二小组,3200);objProjectManager.handleRequest(lr2);Funts lr3=new Funts(第三小组,1500);objProjectManager.handleRequest(lr3);Funts lr4=new Funts(第四小组,900);objProjectManager.handleRequest(lr4);MySubject subject=new Check();MyObserver obs1,obs2,

23、obs3;obs1=new GiveFunt();obs2=new GiveFunt();obs3=new ApplyPeople();subject.attach(obs1);subject.attach(obs2);subject.attach(obs3);subject.pass();五、 系统设计总结1. 实现的功能和优点该公司经费申请主要实现的是公司经费申请的具体流程和实现过程,运用到的设计模式有模板方法模式,职责链模式和观察者模式。职责链模式根据审核经费申请单经费的多少,由不同级别的领导进行审批。观察者模式可以实现表示层和数据逻辑层的分离,并定义可稳定的消息更新传递机制,抽象了更新

24、接口。模板方法模式为整个业务流程应用的该模式,客户端只需访问,而无需知道具体如何实现。该管理系统的优点就是代码的复用率很高,合理的运用了这三种设计模式,各个模块的层次都很清晰,如果想要添加新的模块,不需要更改很多代码,直接在原有代码基础上进行继承实现就行,减少了开发成本。2. 不足之处不足之处就是在本系统中的各个功能比较简单。使用的设计模式相对来讲比较少,只用到了模板方法模式,职责链模式和观察者模式。只实现了活动经费的申请过程,得到通知的后的行为也相对简单,连接不是太紧凑,有很多需要改进的地方。3. 完成心得设计这个公司费用申请系统花了很长时间,但是自己觉得很值得,通过设计和实现此系统,初步掌

25、握了面向对象程序设计的基本思维。要想程序的复用性高,后期维护方便就必须在进行设计的时候,采用合适的设计模式,将具体的抽象出来,较好的提高系统的可扩展性。在模式设计上,主要还是得理解各个模式的基本思想和特点,以及各个模式的各种适用场景,之后就得针对具体的场景然后采用相应的设计模式进行设计,开发和编码。在此非常感谢高老师的辅导和同学的帮助,最终此系统所实现的功能,所以非常感谢大家。相信只要多加锻炼,多写代码,多实现,编程能力会越来越好。六、 参考文献参考文献1 徐宏喆,侯迪等编著,实用软件设计模式教程M,清华大学出版社。2 颜炯编著,C#设计模式M,中国电力出版社。3 程杰,大话设计模式,北京:机械工业出版社,2008。4 设计模式可复用面向对象软件的基础,北京:机械工业出版社。5 美Alan Shalloway著,设计模式精解M,清华大学出版社。指导教师评语:1、设计报告:a、内容: 不完整 完整 详细 b、方案设计: 较差 合理 非常合理c、实现: 未实现 部分实现 全部实现 d、文档格式: 不规范 基本规范 规范 2、考勤: 全勤 缺勤 次设计报告成绩: ,占总成绩比例: 80% 考 勤 成 绩: ,占总成绩比例: 20% 总 成 绩: 。指导教师签字:年 月 日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁