随笔 - 1162
文章 - 0
评论 - 16
阅读 -
59万
随笔分类 - 设计模式2
第一节:备忘录模式——需求说明&传统实现
摘要:一、需求说明 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战 Boss 前保存自身的状态(攻击力和防御力),当大战 Boss 后攻击力和防御力下降,从备忘录对象恢复到大战前的状态。 二、传统实现 首先想到的可能就是来创建一个对象用来保存对象的状态。 三、传统的方式的问题分析 1、一个对象,就
阅读全文
第三节:中介者模式——总结
摘要:中介者模式的注意事项和细节 1、多个类相互耦合,会形成网状结构,使用中介者模式将网状结构分离为星型结构,进行解耦; 2、减少类间依赖,降低了耦合,符合迪米特原则; 3、中介者承担了较多的责任,一旦中介者出现了问题,整个系统就会受到影响; 4、如果设计不当,中介者对象本身变得过于复杂,这点在实际使用中
阅读全文
第二节:中介者模式——原理&应用
摘要:一、中介者模式基本介绍 1、基本介绍 (1)中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互; (2)中介者模式属于行为型代码,使代码易于维护; (3)比如 MVC 模式,C
阅读全文
第一节:中介者模式——需求说明&传统实现
摘要:一、需求说明 智能家庭项目: 1、智能家庭包括各种设备,闹钟、咖啡机、电视机、窗帘等; 2、主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起->咖啡机开始做咖啡->窗帘自动落下->电视机开始播放 二、传统方案解决智能家庭管理问题 三、传统的方式的问题分析 1、当各
阅读全文
第三节:观察者模式——JDK应用的源码分析
摘要:一、观察者模式在 JDK 应用的源码分析 1、JDK 的 Observable 类就使用了观察者模式 2、源码分析 Observable 通过 Vector 来管理 Observer 其中提供了 add/delete/notify 等方法来管理观察者; Observer 是一个接口,提供了一个 up
阅读全文
第二节:观察者模式——原理&应用
摘要:一、观察者模式(Observer)原理 1、观察者模式原理 观察者模式类似于订牛奶业务: (1)奶站/气象局:Subject; (2)用户/第三方网站:Observer Subject:登记注册、移除和通知 (1)registerObserver 注册 (2)removeObserver 移除 (3
阅读全文
第一节:观察者模式——需求说明&传统实现
摘要:一、需求说明 天气预报项目需求,具体要求如下: 1、气象站可以将每天测量到的温度,湿度,气压等等以公告的形式发布出去(比如发布到自己的网站或第三方) 2、需要设计开发型 API,便于其他第三方也能接入气象站获取数据; 3、提供温度、气压和湿度的接口; 4、测量数据更新时,要能实时的通知第三方; 二、
阅读全文
第四节:迭代器模式——总结
摘要:迭代器模式的注意事项和细节 优点: 1. 提供一个统一的方法遍历对象,客户不用再考虑聚合的类型,使用一种方法就可以遍历对象了。 2. 隐藏了聚合的内部结构,客户端要遍历聚合的时候只能取到迭代器,而不会知道聚合的具体组成; 3. 提供了一种设计思想,就是一个类应该只有一个引起变化的原因(叫做单一责任原
阅读全文
第三节:迭代器模式——JDK中集合应用的源码分析
摘要:迭代器模式在 JDK-ArrayList 集合应用的源码分析 1、JDK 的 ArrayList 集合中就使用了迭代器模式; 2、代码分析: 1 public class IteratorTest { 2 3 public static void main(String[] args) { 4 Li
阅读全文
第二节:迭代器模式——迭代器模式应用
摘要:一、应用实例 1、应用实例要求 编写程序展示一个学校院系结构:需求是这样,要在一个页面中展示出学校的院系组成,一个学校有多个学院,一个学院有多个院系。 2、设计思路分析 二、代码实现 院系类:Element 即容器中存放的,需要来遍历的单位 1 /** 2 * 院系 3 */ 4 public cl
阅读全文
第一节:迭代器模式——需求说明&基本介绍
摘要:一、需求说明 编写程序展示一个学校院系结构:需求是这样的,要在一个页面中展示学校的院系组成,一个学校有多个学院,一个学院有多个系。 如图: 二、使用传统的设计方案 1、传统的设计方案(类图) 2、传统方式的问题分析 (1)将学院看做是学校的子类,系是学院的子类,这样实际上是站在组织大小来进行分层次的
阅读全文
第四节:访问者模式——总结
摘要:访问者模式的注意事项和细节 优点: 1、访问者模式符合单一职责原则,让程序具有优秀的扩展性、灵活性非常高; 2、访问者模式可以对功能进行统一,可以做报表、UI、拦截器与过滤器,适用于数据结构相对稳定的系统; 缺点: 1、具体元素对访问者公布细节,也就是说访问者关注了其他类的内部细节,这是迪米特法则所
阅读全文
第三节:访问者模式——分派
摘要:应用案例小结——双分派: 上面的应用提及了双分派,所谓双分派是指不管类怎么变化,我们都能找到期望的方法运行。双分派意味着得到执行的操作取决于请求的种类和两个接收者的类型。 在上一节的案例中,假设我们要添加一个 Wait 的状态类,考察 Man 类和 Woman 类的反应,由于使用了双分派,只需要增加
阅读全文
第二节:访问者模式——访问者模式应用实例
摘要:一、访问者模式应用实例 1、应用实例要求 将人分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价有不同种类:比如成功、失败),使用访问者模式完成实现。 2、思路分析和图解 二、代码实现 抽象访问者: 1 /** 2 * 访问者 3 */ 4 public abst
阅读全文
第一节:访问者模式——需求说明&基本介绍
摘要:一、需求说明 完成测评系统需求 需求说明:将观众分为男人和女人,对歌手进行测评,当看完某个歌手表演后,得到他们对该歌手不同的评价(评价有不同的种类,如成功、失败等) 二、传统方案 1、传统实现 抽象一个父类 Person,下面有其具体的多个实现类,然后根据不同评价给出不同的结果。 2、传统方式的问题
阅读全文
第四节:命令模式——总结
摘要:命令模式的注意事项和细节 1、将发起请求的对象与执行请求的对象解耦。发起请求的对象是调用者,调用者只要调用命令对象的 execute() 方法就可以让接收者工作,而不必知道具体的接收者对象是谁、是如何实现的,命令对象会负责让接收者执行请求的动作,也就是说:“请求发起者” 和 “请求执行者”之间的解耦
阅读全文
第三节:命令模式——在Spring框架应用
摘要:命令模式在 Spring 框架 JdbcTemplate 应用的源码分析 1、Spring 框架的 JdbcTemplate 就使用到了命令模式 2、代码分析: 3、模式角色分析说明 (1)StatementCallBack 接口,类似命令接口(Command) (2)class QueryStat
阅读全文
第二节:命令模式——应用
摘要:一、命令模式解决智能生活项目 1、编写程序,使用命令模式,完成前面的智能家电项目; 2、思路分析和图解 二、代码实现 执行者,被调用者: 1 /** 2 * 执行者,被调用者 3 */ 4 public class LightReceiver { 5 6 public void on() { 7 S
阅读全文
第一节:命令模式——需求说明&基本介绍
摘要:一、需求说明 1、我们买了一套智能家电,有照明灯、风扇、冰箱、洗衣机,我们只要在手机上安装 APP 就可以控制对这些家电工作; 2、这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个 APP,分别控制,我们希望只要一个 APP 就可以控制全部智能家电; 3、要实现一个 APP 控制所有智能
阅读全文
第四节:模板模式——总结
摘要:模板方法模式的注意事项和细节 1、基本思想是:算法只存在于一个地方,也就说在父类中,容易修改。需要修改算法时,只要修改父类的模板方法或者已经实现的某些步骤,子类就会继承这些继承; 2、实现了最大化代码复用。父类的模板方法和已实现步骤会被子类继承而直接使用; 3、即统一了算法,也提供了很大的灵活性。父
阅读全文