摘要: 模板方法模式应用实例 某软件公司欲为某银行的业务支撑系统开发一个利息计算模块,利息计算流程如下: (1) 系统根据账号和密码验证用户信息,如果用户信息错误,系统显示出错提示; (2) 如果用户信息正确,则根据用户类型的不同使用不同的利息计算公式计算利息(如活期账户和定期账户具有不同的利息计算公式); 阅读全文
posted @ 2020-10-19 23:08 47号Gamer丶 阅读(564) 评论(0) 推荐(0) 编辑
摘要: 完整解决方案 Sunny软件公司开发人员使用访问者模式对OA系统中员工数据汇总模块进行重构,使得系统可以很方便地增加新类型的访问者,更加符合“单一职责原则”和“开闭原则”,重构后的基本结构如图所示: 在图中,FADepartment表示财务部,HRDepartment表示人力资源部,它们充当具体访问 阅读全文
posted @ 2020-10-19 18:46 47号Gamer丶 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 完整解决方案 为了实现打折算法的复用,并能够灵活地向系统中增加新的打折方式,Sunny软件公司开发人员使用策略模式对电影院打折方案进行重构,重构后基本结构如图所示: 在图中,MovieTicket充当环境类角色,Discount充当抽象策略角色,StudentDiscount、ChildrenDis 阅读全文
posted @ 2020-10-19 17:41 47号Gamer丶 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 应用实例 下面通过一个包含循环状态的简单实例来说明如何使用环境类实现状态转换: Sunny软件公司某开发人员欲开发一个屏幕放大镜工具,其具体功能描述如下: 用户单击“放大镜”按钮之后屏幕将放大一倍,再点击一次“放大镜”按钮屏幕再放大一倍,第三次点击该按钮后屏幕将还原到默认大小。 可以考虑使用状态模式 阅读全文
posted @ 2020-10-19 17:00 47号Gamer丶 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 完整解决方案 为了实现对象之间的联动,Sunny软件公司开发人员决定使用观察者模式来进行多人联机对战游戏的设计,其基本结构如图所示: 在图中,AllyControlCenter充当目标类, ConcreteAllyControlCenter充当具体目标类,Observer充当抽象观察者,Player 阅读全文
posted @ 2020-10-19 16:09 47号Gamer丶 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 实现多次撤销 Sunny软件公司开发人员通过使用备忘录模式实现了中国象棋棋子的撤销操作,但是使用上述代码只能实现一次撤销,因为在负责人类中只定义一个备忘录对象来保存状态,后面保存的状态会将前一次保存的状态覆盖,但有时候用户需要撤销多步操作。如何实现多次撤销呢? 本节将提供一种多次撤销的解决方案,那就 阅读全文
posted @ 2020-10-19 15:35 47号Gamer丶 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 完整解决方案 Sunny软件公司CRM系统的客户对“客户信息管理窗口”提出了一个修改意见:要求在窗口的下端能够及时显示当前系统中客户信息的总数。修改之后的界面如图所示: 从图中我们不难发现,可以通过增加一个文本标签(Label)来显示客户信息总数,而且当用户点击“增加”按钮或者“删除”按钮时,将改变 阅读全文
posted @ 2020-10-19 14:58 47号Gamer丶 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 完整解决方案 为了简化AbstractObjectList类的结构,并给不同的具体数据集合类提供不同的遍历方式, Sunny软件公司开发人员使用迭代器模式来重构AbstractObjectList类的设计,重构之后的销售管理系统数据遍历结构如图所示: (注:为了简化类图和代码,本结构图中只提供一个具 阅读全文
posted @ 2020-10-19 11:49 47号Gamer丶 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 方案背景 Sunny软件公司开发了一套简单的基于字符界面的格式化指令,可以根据输入的指令在字符界面中输出一些格式化内容,例如输入“LOOP 2 PRINT杨过 SPACE SPACE PRINT 小龙女BREAK END PRINT郭靖 SPACE SPACE PRINT 黄蓉”,将输出如下结果: 阅读全文
posted @ 2020-10-19 11:14 47号Gamer丶 阅读(101) 评论(0) 推荐(0) 编辑