摘要: 23.3 完整解决方案 为了实现对象之间的联动,Sunny软件公司开发人员决定使用观察者模式来进行多人联机对战游戏的设计,其基本结构如图22-4所示:图22-4 多人联机对战游戏结构图 在图22-4中,AllyControlCenter充当目标类,ConcreteAllyCon... 阅读全文
posted @ 2013-11-13 14:59 Wishmeluck 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 观察者模式是设计模式中的“超级模式”,其应用随处可见,在之后几篇文章里,我将向大家详细介绍观察者模式。 “红灯停,绿灯行”,在日常生活中,交通信号灯装点着我们的城市,指挥着日益拥挤的城市交通。当红灯亮起,来往的汽车将停止;而绿灯亮起,汽车可以继续前行。在这个过程中,交通信号灯是汽车(... 阅读全文
posted @ 2013-11-13 14:59 Wishmeluck 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 22.6 观察者模式与MVC 在当前流行的MVC(Model-View-Controller)架构中也应用了观察者模式,MVC是一种架构模式,它包含三个角色:模型(Model),视图(View)和控制器(Controller)。其中模型可对应于观察者模式中的观察目标,而视图对应于观察者... 阅读全文
posted @ 2013-11-13 14:59 Wishmeluck 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 22.5 观察者模式与Java事件处理 JDK 1.0及更早版本的事件模型基于职责链模式,但是这种模型不适用于复杂的系统,因此在JDK1.1及以后的各个版本中,事件处理模型采用基于观察者模式的委派事件模型(DelegationEvent Model,DEM),即一个Java组件所引发... 阅读全文
posted @ 2013-11-13 14:59 Wishmeluck 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 22.4 JDK对观察者模式的支持 观察者模式在Java语言中的地位非常重要。在JDK的java.util包中,提供了Observable类以及Observer接口,它们构成了JDK对观察者模式的支持。如图22-5所示:图22-5 JDK提供的Observable类及Observer接... 阅读全文
posted @ 2013-11-13 14:59 Wishmeluck 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 24.4 策略模式的两个典型应用 策略模式实用性强、扩展性好,在软件开发中得以广泛使用,是使用频率较高的设计模式之一。下面将介绍策略模式的两个典型应用实例,一个来源于JavaSE,一个来源于微软公司推出的演示项目PetShop。 (1) Java SE的容器布局管理就是策略模式... 阅读全文
posted @ 2013-11-13 14:35 Wishmeluck 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 24.3 完整解决方案 为了实现打折算法的复用,并能够灵活地向系统中增加新的打折方式,Sunny软件公司开发人员使用策略模式对电影院打折方案进行重构,重构后基本结构如图24-2所示: 在图24-2中,MovieTicket充当环境类角色,Discount充当抽象策略角色,Stu... 阅读全文
posted @ 2013-11-13 14:35 Wishmeluck 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 24.2 策略模式概述 在策略模式中,我们可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法,在这里,每一个封装算法的类我们都可以称之为一种策略(Strategy),为了保证这些策略在使用时具有一致性,一般会提供一个抽象的策略类来做规则的定义,而每种算法则对应于一个具体策... 阅读全文
posted @ 2013-11-13 14:35 Wishmeluck 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 俗话说:条条大路通罗马。在很多情况下,实现某个目标的途径不止一条,例如我们在外出旅游时可以选择多种不同的出行方式,如骑自行车、坐汽车、坐火车或者坐飞机,可根据实际情况(目的地、旅游预算、旅游时间等)来选择一种最适合的出行方式。在制订旅行计划时,如果目的地较远、时间不多,但不差钱,可以选择坐飞机... 阅读全文
posted @ 2013-11-13 14:35 Wishmeluck 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 在通用的外观模式结构图中,如果需要增加、删除或更换与外观类交互的子系统类,必须修改外观类或客户端的源代码,这将违背开闭原则,因此我们可以通过引入抽象外观类来对系统进行改进,在一定程度上解决该问题。在引入抽象外观类之后,客户端可以针对抽象外观类进行编程,对于新的业务需求,不需要修改原有外观类,而... 阅读全文
posted @ 2013-11-13 14:31 Wishmeluck 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 由于外观类维持了对多个子系统类的引用,外观对象在系统运行时将占用较多的系统资源,因此需要对外观对象的数量进行限制,避免系统资源的浪费。可以结合单例模式对外观类进行改进,将外观类设计为一个单例类。通过对外观模式单例化,可以确保系统中只有唯一一个访问子系统的入口,降低系统资源的消耗。单例化之后的外... 阅读全文
posted @ 2013-11-13 14:31 Wishmeluck 阅读(422) 评论(0) 推荐(0) 编辑
摘要: 外观模式是使用频率最高的结构型设计模式之一,无论是在Web应用软件或是桌面应用软件,还是在移动应用软件中,外观模式都得到了广泛的应用。 外观模式要求外部与一个子系统的通信可以通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的入口,它定义了一个高层接口,这个接口使得相关子系统... 阅读全文
posted @ 2013-11-13 14:28 Wishmeluck 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 实例分析3——售票机控制程序 某运输公司决定为新的售票机开发车票销售的控制软件。图I给出了售票机的面板示意图以及相关的控制部件。图I 售票机面板示意图 售票机相关部件的作用如下所述: (1) 目的地键盘用来输入行程目的地的代码(例如,200表示总站)。 (2)... 阅读全文
posted @ 2013-11-13 14:14 Wishmeluck 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 实例分析1——登录模块 某基于C/S的即时聊天系统登录模块功能描述如下: 用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较,验证用户输入是否正确,如果输入正确则进入主界面(MainForm),否则提示“... 阅读全文
posted @ 2013-11-13 14:14 Wishmeluck 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 在UML2.0的13种图形中,类图是使用频率最高的UML图之一。Martin Fowler在其著作《UML Distilled: A Brief Guide tothe Standard Object Modeling Language, ThirdEdition》(《UML精粹:标准对象建模... 阅读全文
posted @ 2013-11-13 14:08 Wishmeluck 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 类与类之间的关系(2) 2. 依赖关系 依赖(Dependency)关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。在UML中,依赖关系用带... 阅读全文
posted @ 2013-11-13 14:08 Wishmeluck 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 类与类之间的关系(1) 在软件系统中,类并不是孤立存在的,类与类之间存在各种关系,对于不同类型的关系,UML提供了不同的表示方式。 1. 关联关系 关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系... 阅读全文
posted @ 2013-11-13 14:08 Wishmeluck 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 11.5 公司组织结构 在学习和使用组合模式时,Sunny软件公司开发人员发现树形结构其实随处可见,例如Sunny公司的组织结构就是“一棵标准的树”,如图11-8所示:图11-8 Sunny公司组织结构图 在Sunny软件公司的内部办公系统Sunny OA系统中,有一个与公司... 阅读全文
posted @ 2013-11-13 13:44 Wishmeluck 阅读(333) 评论(0) 推荐(0) 编辑
摘要: 11.4 透明组合模式与安全组合模式 通过引入组合模式,Sunny公司设计的杀毒软件具有良好的可扩展性,在增加新的文件类型时,无须修改现有类库代码,只需增加一个新的文件类作为AbstractFile类的子类即可,但是由于在AbstractFile中声明了大量用于管理和访问成员构件的方... 阅读全文
posted @ 2013-11-13 13:44 Wishmeluck 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 11.3 完整解决方案 为了让系统具有更好的灵活性和可扩展性,客户端可以一致地对待文件和文件夹,Sunny公司开发人员使用组合模式来进行杀毒软件的框架设计,其基本结构如图11-5所示:图11-5 杀毒软件框架设计结构图 在图11-5中,AbstractFile充当抽象构件类,Fo... 阅读全文
posted @ 2013-11-13 13:44 Wishmeluck 阅读(146) 评论(0) 推荐(0) 编辑