文档介绍:AiVYAMC1MSTITGTEOFTECHNOLOGY
设计模式大作业
课程名称:软件设计模式
设计题目:
院系:计算机科学与信息工程学院
学生姓名:
学号:
专业班级:软件工程13-1
指导教师:
2016年6月
自的职责权限进行审核,并将结果告知申请人,财务部根据结果给予拨款。将结果返回到客户端,呈现给用户。
选用设计模式
根据需求分析,该公司经费申请可以采用到三种设计模式,分别是模板方法模式,职责链模式,观察者模式。
(1)模板方法模式
采用模板方法模式的原因是它定义了一个操作中算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。公司申请活动经费的流程是固定的,由申请人先填写申请单,然后交给领导审批,最后得到审批结果,作出相应行动。用模板方法模式使其结构清晰,提高了代码的复用性。模式结构图如图1-1:
图1-1模板方法模式结构图
(2)职责链模式采用职责链模式的主要原因是对于审核经费申请单,由上级领导进行处理,而不同级别的领导,对于审批的额度是不一样的。职责链模式避免请求发送者和接收者耦合在一起,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。这样降低了耦合度,简化对象的相互连接,增强给对象指派职责的灵活性。模式结构图如图1-2:
图1-2职责链模式结构图
(3)观察者模式
采用观察者模式的主要原因是可以实现表示层和数据逻辑层的分离,并定义
可稳定的消息更新传递机制,抽象了更新接口。在观察目标和观察者之间建立一个抽象的耦合。模式结构图如图1-3:
MySutiject
(abstract.}iabservers:ArrayList
observers
0—
MyObserver
■nattachCMyObserverobserver):void+<fetach(Myobserverobserver):void
+responselJ:void
:void!
AT
cj—
图1-3观察者模式结构图
三、系统设计
根据需求分析,公司经费申请可分为三个模块,主要如下:
♦申请人填写经费申请单:向上级领导提交申请。
♦领导审核:根据职责权限不同,按各自的管理范围一一送派审核。
♦收到审核结果通知:收到上级领导对经费申请单批准与否的信息
图2-1公司经费申请模块
四、系统实现
模板方法模式和其实现类
模板方法模式贯穿在整个系统中,公司经费申请由三个具体部分组成,填写
申请单,经领导审批,最后接收到通知。
模板方法模式贯穿整个工作模块,实现代码如下:
publicabstractclassApplicationForFunds
{
publicvoidapply()
{
("填写申请单");
}
publicabstractvoidtoExamine。;
publicvoidevaluate()
{
("得到通知");
}
publicvoidprocess()
{
;
。;
();
}
}
publicclassActivityFundextendsApplicationForFunds
{
publicvoidtoExamine()
{
("活动经费");
}
}
publicclassProjectFundextendsApplicationForFunds
{
publicvoidtoExamine()
{
("项目经费");
}
}
职责链模式避免请求发送者和接收者耦合在一起,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。主要解决的是上级领导中的那个具体人来实现审核工作。
职责链模式来完成领导审核模块,实现代码如下:
publicabstractclassLeader
{
protectedStringname;
protectedLeadersuccessor;
publicLeader(Stringname)
{
;
}
publicvoidsetSuccessor(Leadersuccessor)
{
;
}
publicabstractvoidhandleRequest(Funts