两种软件设计模式案例分析
16页1、摘要本学期我学习了“设计模式-可复用面向对象软件的基础”这门课程,这次 我采用的是命令模式+策略模式两种设计模式结合的案例。分析的案例为:遥控器控制天花板上的吊扇,它有多种转动速度,当然也允 许被关闭。假设吊扇速度:高、中、低、关闭。采用安全模式+策略设计模式。报告整体结构为:两种设计模式的分析、理解,类图,实例分析、代码分析, 总结。目录第一章命令模式+策略模式11.1命令模式11.1.1 定义11.1.2命令模式的结构11.1.3 角色11.1.4 优点21.1.5 缺点21.5.6适用情况21.2策略模式22.1.1 意图22.2.2主要解决问题22.2.4如何解决32.2.5关键代码32.2.6 优点32.2.7 缺点32.2.8使用场景32.2.9注意事项3第二章案例分析.42.1类图.42.2测试分析.42.3代码分析52.2.1命令模式模块代码52.2.2策略模式模块代码10第三章总结13第一章命令模式+策略模式本案例用到的两种案例为安全模式+策略模式,因此在分析案例之前我先对 两种设计模式进行分析。命令模式具体实现命令调控,策略模式定义一系列的算 法,把它们一个个封装起
2、来。1.1命令模式1.1.1定义将来自客户端的请求传入一个对象,从而使你可用不同的请求对客户进行参 数化。用于行为请求者”与行为实现者解耦,可实现二者之间的松耦合,以便 适应变化。分离变化与不变的因素。1.1.2命令模式的结构命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任 分割开,委派给不同的对象。每一命令都是一操作:请求的一方发出请求要求执行一操作;接收 的一方收到请求,并执行操作。命令模式允许请求的一方和接收的一方独立开来, 使得请求的一方不必知道接收请求的一方的接,更不必知道请求是怎么被接 收,以及操作是否被执行、何时被执行,以及是怎么被执行的。1.1.3角色Command定义命令的接,声明执行的方法。ConcreteCommand命令接实现对象,是虚”勺实现;通常会持有接收者,并调用接收者的功 能来完成命令要执行的操作。Receiver接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能够 实现命令要求实现的相应功能。Invoker要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。 这个是客户端真正触发命令并要求命令执行相应操作的地
3、方,也就是说相当于使 用命令对象的入口。Clie nt创建具体的命令对象,并且设置命令对象的接收者。注意这个不是我们常规 意义上的客户端,而是在组装命令对象和接收者,或许,把这个Client称为装配 者会更好理解,因为真正使用命令的客户端是从Invoker来触发执行。1.1.4优点1. 降低对象之间的耦合度。2. 新的命令可以很容易地加入到系统中。3. 可以比较容易地设计一个组合命令。4. 调用同一方法实现不同的功能1.1.5缺点使用命令模式可能会导致某些系统有过多的具体命令类。因为针对每一个命 令都需要设计一个具体命令类,因此某些系统可能需要大量具体命令类,这将影 响命令模式的使用。1.5.6适用情况1. 系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交 互。2. 系统需要在不同的时间指定请求、将请求排队和执行请求。3. 系统需要支持命令的撤销(Un do)操作和恢复(Redo)操作。4. 系统需要将一组操作组合在一起,即支持宏命令。1.2策略模式2.1.1意图定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。2.2.2主要解决问题在有多种算法相似的情况下
4、,使用if.else所带来的复杂和难以维护。2.2.3何时使用一个系统有许多许多类,而区分它们的只是他们直接的行为。2.2.4如何解决将这些算法封装成一个一个的类,任意地替换。2.2.5关键代码实现同一个接口。应用实例:1、诸葛亮的锦囊妙计,每一个锦囊就是一个策略。2、旅行的 出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。3、JAVA AWT 中的 LayoutManager。2.2.6优点1、算法可以自由切换。2、避免使用多重条件判断。3、扩展性良好。2.2.7缺点1、策略类会增多。2、所有策略类都需要对外暴露。2.2.8使用场景1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那 么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。2、一个系统需要动态地在几种算法中选择一种。3、如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使 用多重的条件选择语句来实现。2.2.9注意事项如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀 的问题。第二章案例分析本文分析的案例为:遥控器控制天花板上的吊扇,它有多种转动速度,当然 也允
《两种软件设计模式案例分析》由会员re****.1分享,可在线阅读,更多相关《两种软件设计模式案例分析》请在金锄头文库上搜索。
简洁实用的2022年公司年会策划方案模板
政务大厅年度行政服务工作总结模板(2篇).doc
经典大货车租赁合同范文(七篇)
高中生物人教版必修二检测:4.2 基因对性状的控制 Word版含答案
深圳地下车位租赁协议书参考范文(四篇).doc
吉安关于成立水处理解决方案公司可行性报告_参考模板
因式分解法解一元二次方程教案
安徽省庐江县乐桥中学2015-2016学年高一地理上学期第二次月考试题
高速线材精轧机常见故障分析与故障诊断方法研究本科毕业论文.doc
《美丽的兴凯湖》说课稿四年级上册
2023年期中班主任工作计划
秘书处部长工作计划模板(2篇).doc
2012二次函数图象和性质练习题
宜宾数字农业技术服务项目商业计划书_范文参考
对于脱贫攻坚专题巡察整改工作情况汇报
道路运输安全生产管理制度标准范本(三篇).doc
客服工作总结标准范本(3篇).doc
普通生态学复习提纲
市场营销学答案解析
沪教版语文三年级第二学期第三单元课课练
2023-04-16 22页
2023-03-27 29页
2022-08-27 7页
2023-05-13 15页
2023-02-26 5页
2022-11-24 18页
2022-09-23 2页
2023-04-27 4页
2023-07-07 2页
2023-04-05 6页