当前标签: 设计模式

行为型模式 定义和应用场景 - 2

2014-10-31 23:22:34

请关注唯心的个人微信公众号:craft6-cn(中划线,也可以搜索:领域驱动业务建模)

行为型设计模式 定义和应用场景 - 2 Craft6.cn 颜超敏.jpeg

============================================================= 行为型设计模式 定义和应用场景 - 2 Craft6.cn 颜超敏 ============================================================= ------------------------------------------------------------- 1 中介者模式 ------------------------------------------------------------- 1.1 定义 1.1.1 解决M:N多对多的交互关系 1.1.2 用一个中介对象封装一系列的对象交互,中介者使各对象不需要显式地相互作用,从而使其耦合松散。 1.2 角色 1.2.1 抽象中介角色 Mediator 1.2.2 具体中介角色 Concrete Mediator 1.2.3 同事角色 Colleague 1.2.3.1 具体的业务类,通过中介和其它同事交互 1.2.4 通过中介角色来完成 同事角色之间的交互 1.3 优点 1.3.1 减少依赖,降低同事角色之间的耦合 1.4 缺点 1.4.1 中介者会膨胀得很快,同事类越多,中介者越复杂 1.5 场景和实例 1.5.1 MVC中Controller 1.5.2 调度类服务 1.5.3 房产中介 ------------------------------------------------------------- 2 备忘录模式 ------------------------------------------------------------- 2.1 定义 2.1.1 为了给应用一个undo的机会 2.1.2 抽象出一个独立对象专门管理“记住”和“恢复”的工作 2.2 角色 2.2.1 发起者 Originator 2.2.1.1 负责提取需要备忘的内容,并可使用备忘录恢复内部状态 2.2.2 备忘录 Memento 2.2.2.1 负责存储发起者对象的当前状态 2.2.3 备忘录管理者 Caretaker 2.2.3.1 负责保存好备忘录 2.2.4 把备忘压栈,简化发起者的设计 2.3 场景和实例 2.3.1 记事本的操作回滚功能 2.3.2 数据库事务回滚 ------------------------------------------------------------- 3 观察者模式 ------------------------------------------------------------- 3.1 定义 3.1.1 抽象出一类被称为“观察者”的对象,由它负责专门“盯着”目标对象 3.1.2 主要用于1 对 N 的通知 3.2 两种渠道获得更新 3.2.1 推 3.2.1.1 当目标对象更新时,把需要更新的信息一并传给观察者 3.2.1.2 优劣 3.2.1.2.1 观察者被动接受,如果通知内容较多,可能会对网络、内存有比较大的影响 3.2.2 拉 3.2.2.1 目标对象仅仅告诉观察者有新的状态,至于该状态是什么,需由观察者自己访问目标对象来获取 3.2.2.2 优劣 3.2.2.2.1 更加自由,但如果观察者不及时获取,可能漏掉更新内容 3.2.2.2.2 观察者需要依赖目标对象 3.3 场景和实例 3.3.1 Spring 的事件和监听 3.3.1.1 ApplicationEvent and ApplicationListener 3.3.2 可拆分的关联行为 3.3.2.1 动作完成后 3.3.2.1.1 发送短信、邮件、站内信息;记录日志等 3.3.3 JMS、ActiveMQ 3.3.3.1 消息中间件实现消息的异步发送 3.3.4 信息广播 3.3.4.1 站内通知 3.3.4.2 天气预报 3.3.5 客户端程序的界面互动 3.3.5.1 A 面板的大小调整会影响其它面板,那么其它面板相对于A就是观察者 ------------------------------------------------------------- 4 状态模式 ------------------------------------------------------------- 4.1 定义 4.1.1 把状态转换及转换对操作的影响封装在独立的状态类型中 4.2 优点 4.2.1 结构清晰,避免过多的if else 4.2.2 遵循设计原则 4.2.2.1 符合开闭原则,每个状态都是一个子类 4.2.3 封装性非常好 4.2.3.1 状态变换放置到类的内部来实现 4.3 缺点 4.3.1 状态子类可能会太多 4.4 场景和实例 4.4.1 条件、分支判断语句的代替者 4.4.2 行为随状态改变而改变的场景 4.4.2.1 订单状态变更 ------------------------------------------------------------- 5 策略模式 ------------------------------------------------------------- 5.1 定义 5.1.1 完成一件事情不止一个可选择的方法,或预期会有更多方法 5.1.2 各方法试图解决的是同一件事情 5.1.3 每个方法是独立于其他方法的 5.2 优势 5.2.1 封装系列的算法 5.3 场景和实例 5.3.1 Hibernate的Dialect 方言 5.3.1.1 Dialect 表示各数据库方言的抽象父类 5.3.1.2 不同数据库的操作差异在子类中实现 5.3.1.3 通过配置指定实际使用那个Dialect的子类 5.3.2 Spring的ViewResolver 5.3.2.1 提供多种视图解决方案 ------------------------------------------------------------- 6 访问者模式 ------------------------------------------------------------- 6.1 定义 6.1.1 对于一系列元素,在不改变各元素的前提下增加新的功能(或操作) 6.1.2 Subtopic 6.2 优点 6.2.1 由具体元素负责数据的加载,访问者负责数据的展现(报表、统计等) 6.2.2 扩展性 —— 当需要新增展现形式时,增加访问者方法即可 6.3 缺点 6.3.1 访问者需要了解元素的内部细节 6.3.2 元素需要变更时比较困难 6.4 场景和实例 6.4.1 遍历指定指定的某部分对象集合,并且需要对对象的数据进行信息处理、构造 6.4.2 需要对元素的数据进行一些信息构造,但这些处理和元素无关,为了避免污染元素    


可通过扫描左侧二维码阅读本文。本站文章均为颜超敏原创,欢迎转载,请注明出处即可,转载可通过下面的社会化工具快速完成。

分享到:


为您推荐这些文章,如果感兴趣,请继续阅读吧:

行为型模式 定义和应用场景 - 2

中介者模式, 备忘录模式, 观察者模式, 状态模式, 策略模式, 访问者模式

阅读《模式 —— 工程化实现及扩展》、《设计模式之禅》、《研磨设计模式》三本书。以及参考网上的若干篇文章收集而成,

内容针对行为型的其中6种设计模式,本图并非设计模式教程,而是方便自己,以及对设计模式已经有所理解的读者开发备忘。


颜超敏,唯心六艺,Craft6.cn,电子商务博客,电子商务研发,电商研发,电子商务研究,电商研究,电子商务专家,电商专家,电子商务知识,电商知识,电子商务教程,电商教程,电子商务模式,电子商务平台,电子商务商业模式,电子商务数据库设计,电商数据库设计,电子商务系统分析,Java架构设计,Java软件架构,B2C,O2O,o2o模式,o2o电子商务,o2o电子商务平台,中国电子商务,电子商务平台建设方案
粤ICP备14060523号 Copyright @2014 -唯心六艺软件