软件设计模式大作业样例 (1)Word格式.doc

上传人:b****1 文档编号:13120070 上传时间:2022-10-05 格式:DOC 页数:15 大小:191KB
下载 相关 举报
软件设计模式大作业样例 (1)Word格式.doc_第1页
第1页 / 共15页
软件设计模式大作业样例 (1)Word格式.doc_第2页
第2页 / 共15页
软件设计模式大作业样例 (1)Word格式.doc_第3页
第3页 / 共15页
软件设计模式大作业样例 (1)Word格式.doc_第4页
第4页 / 共15页
软件设计模式大作业样例 (1)Word格式.doc_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

软件设计模式大作业样例 (1)Word格式.doc

《软件设计模式大作业样例 (1)Word格式.doc》由会员分享,可在线阅读,更多相关《软件设计模式大作业样例 (1)Word格式.doc(15页珍藏版)》请在冰豆网上搜索。

软件设计模式大作业样例 (1)Word格式.doc

计算机科学与信息工程学院

专业、年级、班

软件工程13-1

设计要求:

1.设计一个应用场景,最少使用所学过的三种设计模式解决一个实际问题。

一人一题,不可重复。

2.应用场景设计要合理,模式选择要适当。

3.要求给出系统模式结构图,主要类的设计代码。

4.编写验证程序,在验证程序中要在显著位置显示个人信息。

学生应完成的工作:

1.应用场景:

公司经费申请,可以了解申请经费的具体流程,由申请人先填写申请单,然后交给领导审批,如果申请批准下来,领导会通知申请人审批通过,然后申请人去财务领取费用,如果没有批准下来,领导会通知申请人审批未通过。

不同级别的领导,对于审批的额度是不一样的,比如,项目经理只能审批500元以内的申请;

部门经理能审批1000元以内的申请;

而总经理可以审核3000元以内的申请,否则不通过。

2.设计模式:

模板方法模式,职责链模式,观察者模式。

(1)模板方法模式:

定义了一个操作中算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

(2)职责链模式:

不同级别的领导,对于审批的额度不一样,使其各自的职责权限更加清晰明了。

(3)观察者模式:

一个对象状态发生改变时,其相应依赖对象得到通知并自动更新。

3.实现代码:

使用java语言实现所有功能。

参考文献阅读:

[1]徐宏喆,侯迪等编著,实用软件设计模式教程[M],清华大学出版社。

[2]颜炯编著,C#设计模式[M],中国电力出版社。

[3]程杰,大话设计模式,北京:

机械工业出版社,2008。

[4]设计模式——可复用面向对象软件的基础,北京:

机械工业出版社。

[5][美]AlanShalloway著,设计模式精解[M],清华大学出版社。

工作计划:

1.审题,查阅资料,进行设计前的必要资料准备(3天)。

2.把程序完整运行出来(4天)。

3.增加改进程序(3天)。

4.写课程设计报告(3天)。

5.提交课程设计报告(1天)。

任务下达日期:

2015年6月9日

任务完成日期:

2015年6月22日

指导教师(签名):

高原学生(签名):

代小雪

目录

一、系统目标 1

1.设计目的 1

2.需求描述 1

二、系统模块选择 1

1.需求分析 1

2.选用设计模式 2

(1)模板方法模式 2

(2)职责链模式 2

(3)观察者模式 3

三、系统设计 4

1.系统功能模块设计 4

四、系统实现 5

1.模板方法模块及其实现类 5

2.职责链模块及其实现类 6

3.观察者模块及其实现类 9

4.事件处理程序 10

五、系统设计总结 11

1.实现的功能和优点 11

2.不足之处 12

3.完成心得 12

六、参考文献 12

参考文献 12

一、系统目标

1.设计目的

通过本课程设计,加深对软件设计课程的理解,熟练掌握和巩固所学的各种设计模式,培养自我动手、查阅技术文献、资料、手册以及编写技术文献的能力。

通过运用设计模式来解决实际系统中遇到的问题,从而具备利用计算机编程分析解决综合性实际问题的初步能力。

2.需求描述

本系统的主要目的在与应用设计模式解决公司经费申请问题,可以了解申请经费的具体流程为申请人先填写申请单,然后交给领导审批,如果申请批准下来,领导会通知申请人审批通过,然后申请人去财务领取费用,财务部给于其拨款,如果没有批准下来,领导会通知申请人审批未通过。

系统中总共用到三种设计模式,分别是模板方法模式,职责链模式,观察者模式。

模板方法模式定义了一个操作中算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

申请经费的具体流程是固定的,写申请单,审核,得到通知这三个过程,只是审核过程不同。

职责链模式鉴于不同级别的领导,对于审批的额度是不一样,使其各自的职责权限更加清晰明了。

观察者模式是一种一对多依赖关系,一个对象状态发生改变时,其相应依赖对象得到通知并自动更新。

二、系统模块选择

1.需求分析

根据问题的描述,可以确定系统的大致业务逻辑。

如下:

需要申请活动费用,按照固定工作流程进行申请,给出申请金额,由领导根据各自的职责权限进行审核,并将结果告知申请人,财务部根据结果给予拨款。

将结果返回到客户端,呈现给用户。

2.选用设计模式

根据需求分析,该公司经费申请可以采用到三种设计模式,分别是模板方法模式,职责链模式,观察者模式。

(1)模板方法模式

采用模板方法模式的原因是它定义了一个操作中算法的骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

公司申请活动经费的流程是固定的,由申请人先填写申请单,然后交给领导审批,最后得到审批结果,作出相应行动。

用模板方法模式使其结构清晰,提高了代码的复用性。

模式结构图如图1-1:

图1-1模板方法模式结构图

(2)职责链模式

采用职责链模式的主要原因是对于审核经费申请单,由上级领导进行处理,而不同级别的领导,对于审批的额度是不一样的。

职责链模式避免请求发送者和接收者耦合在一起,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。

这样降低了耦合度,简化对象的相互连接,增强给对象指派职责的灵活性。

模式结构图如图1-2:

图1-2职责链模式结构图

(3)观察者模式

采用观察者模式的主要原因是可以实现表示层和数据逻辑层的分离,并定义可稳定的消息更新传递机制,抽象了更新接口。

在观察目标和观察者之间建立一个抽象的耦合。

模式结构图如图1-3:

图1-3观察者模式结构图

三、系统设计

1.系统功能模块设计

根据需求分析,公司经费申请可分为三个模块,主要如下:

u申请人填写经费申请单:

向上级领导提交申请。

u领导审核:

根据职责权限不同,按各自的管理范围一一送派审核。

u收到审核结果通知:

收到上级领导对经费申请单批准与否的信息。

公司经费申请

填写经费申请单

领导审核

收到审核结果

图2-1公司经费申请模块

四、系统实现

1.模板方法模式和其实现类

模板方法模式贯穿在整个系统中,公司经费申请由三个具体部分组成,填写申请单,经领导审批,最后接收到通知。

模板方法模式贯穿整个工作模块,实现代码如下:

publicabstractclassApplicationForFunds

{

publicvoidapply()

{

System.out.println("

填写申请单"

);

}

publicabstractvoidtoExamine();

publicvoidevaluate()

得到通知"

publicvoidprocess()

{

this.apply();

this.toExamine();

this.evaluate();

}

}

publicclassActivityFundextendsApplicationForFunds

publicvoidtoExamine()

活动经费"

}

publicclassProjectFundextendsApplicationForFunds

项目经费"

2.职责链模式和其实现类

主要解决的是上级领导中的那个具体人来实现审核工作。

职责链模式来完成领导审核模块,实现代码如下:

publicabstractclassLeader

protectedStringname;

protectedLeadersuccessor;

publicLeader(Stringname)

this.name=name;

publicvoidsetSuccessor(Leadersuccessor)

this.successor=successor;

publicabstractvoidhandleRequest(Funtsrequest);

publicclassDivisionManagerextendsLeader

publicDivisionManager(Stringname)

super(name);

publicvoidhandleRequest(Funtsrequest)

if(request.getMoney()<

1000)

{

System.out.println("

部门经理"

+name+"

审批"

+request.getReplyName()+"

员工的活动经费,经费为"

+request.getMoney()+"

元。

可去财务部领取费用。

"

}

else

if(this.successor!

=null)

{

this.successor.handleRequest(request);

}

publicclassGeneralManagerextendsLeader

publicGeneralManager(Stringname)

3000)

总经理"

审批员工"

System.out.println(request.getRepl

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 自我管理与提升

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1