摘要: 观察者模式Observer 广播机制 场景:多个观察者--被通知改变 CS的时候,人物移动坐标变化,更新每个人地图上的坐标 核心:当目标对象(Subject)的状态值改变时,需要及时告知所有观察者(Observer),使他们做出响应 开发中常见的场景: -聊天室程序中,服务器转发给所有客户端 -网络 阅读全文
posted @ 2019-08-16 21:41 小帆敲代码 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 状态模式state 场景:当具有许多状态并且需要频繁改变时,用这种模式 -电梯的运行:维修,正常,自动关门,自动开门,向上运行,向下运行,消防状态 -红绿灯:红灯,黄灯,绿灯 -企业或政府系统:公文的审批状态 -网上购物时,订单的状态:下单,已付款,送货中,已收货 核心:用于解决系统中复杂对象的状态 阅读全文
posted @ 2019-08-16 20:20 小帆敲代码 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 模板模式template method 场景:具有具体流程,但具体某一步的业务不同 到银行办理业务:排队取号,办理业务,给员工打分 请客吃饭:等待,点单,吃饭,结账 模板方法模式介绍:模板方法是编程常用的模式,它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算 阅读全文
posted @ 2019-08-16 19:11 小帆敲代码 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 策略模式strategy 场景:对不同客户的不同报价策略 如果采用if else不易扩展,不符合开闭原则,可以采用策略模式 策略模式: 对应于解决某一个问题的算法族,允许其中一个算法去解决某一问题,同时可以方便的更改和扩展算法,可以由客户端决定调用那个算法 结构:抽象策略类,具体策略类(算法族),上 阅读全文
posted @ 2019-08-16 13:18 小帆敲代码 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 访问者模式Visitor 模式动机:对于存储在一个集合中的对象,他们可能具有不同的类型(即使有一个公共的接口),对于该集合中的对象,可以接受一类称为访问者的对象来访问,不同访问者的访问方式也不同 定义:表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变元素的类的前提下定义作用与这些元素的 阅读全文
posted @ 2019-08-16 11:26 小帆敲代码 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 解释器模式Interpreter -是一种不常用的设计模式 -用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计 -当我们需要开发一种新的语言时,可以考虑使用解释器模式 -尽量不要使用解释器模式,后期维护会有很大麻烦,在项目中,可以使用Jruby,Groovy,j 阅读全文
posted @ 2019-08-16 11:20 小帆敲代码 阅读(85) 评论(0) 推荐(0) 编辑
摘要: 命令模式Command 将一个请求封装为一个对象,从而使我们可用不同的请求对客户参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。也称之为:动作Action模式,事务transaction模式 在命令发出,命令执行前后可以进行相关操作也具有更高的扩展性,包括多个执行者,多个命令的情况 结构: 阅读全文
posted @ 2019-08-16 11:08 小帆敲代码 阅读(111) 评论(0) 推荐(0) 编辑
摘要: 中介者模式Mediator 场景:公司中各个部门需要交互,通过中介总经理进行交互 核心: 如果一个系统中对象之间的联系成网状结构,对象之间多对多,将导致关系极其复杂,这些对象统称为“同事关系” 我们可以引入一个中介者对象,使各个同事对象只和自身与中介者打交道,中介再去其他部门交互 中介者模式的本质: 阅读全文
posted @ 2019-08-15 15:21 小帆敲代码 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 迭代器模式Iterator /** * 自定义迭代器接口 * @author 小帆敲代码 * */public interface MyIterator { void first();//游标置于第一个 void last();//游标置于最后一个 boolean isfirst(); boolea 阅读全文
posted @ 2019-08-15 14:37 小帆敲代码 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 责任链模式chain of responsibility 将能够处理同一类请求的对象连成一条链,所提交的请求依次在链上传递,直到传递至有能力处理该请求的对象,不能则传给链上下一个 场景: -打牌时 -奖学金审批 -请假审批 核心:是在客户端中才成链,也可以通过配置文件或者存在数组中加载 开发中常见场 阅读全文
posted @ 2019-08-15 12:02 小帆敲代码 阅读(167) 评论(0) 推荐(0) 编辑