前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Head First设计模式——中介者模式和备忘录模式

Head First设计模式——中介者模式和备忘录模式

作者头像
SpringSun
发布2020-08-11 15:13:38
2670
发布2020-08-11 15:13:38
举报
文章被收录于专栏:技术赋能学术技术赋能学术

中介者

中介者模式:使用中介者来集中相关对象之间复杂的沟通方式和控制方式。

Bob有一个自动屋,当他的闹钟响了之后,闹钟会告诉咖啡壶开始煮咖啡。后来客户不断的提出许多新需求:周末不要提供咖啡、下班后需要扫地机器人扫地等。这个时候咖啡壶需要接受闹钟并检查日期,而日历需要接受闹钟的询问并告诉闹钟是否周末,扫地机器人需要接受闹钟并检查是否下班时间等等一系列操作。

想要持续地追踪每个对象的每个规则,以及众多对象之间彼此错综复杂的关系对于设计来说不满足单一职责,同时可能会相互引用造成系统复杂。这个时候就可以使用中介者模式,在系统中引入一个中介者。

  • 每个对象都会在自己的状态改变时,告诉中介者。
  • 每个对象都会对中介者发出的请求作出响应。

设计类图:

1) Mediator 抽象中介者   用于定义统一的接口, 用于各设备对象之间的交互 2) Concrete Mediator 具体中介者   具体中介者持有各设备对象的引用, 负责协调各设备对象的行为以完成协作, 因此具体中介者必须依赖具体设备对象(不符合依赖倒置原则) 3) Equipment 设备抽象类   每个设备都知道中介者对象(持有接口引用), 与其他设备通信的时候,都通过中介者协作完成   每个设备实现接口用于中介者通知

优点:

1、通过将对象彼此解耦,可以增加对象的复用性。

2、通过将控制逻辑集中,可以简化系统维护。

3、可以让对象之间所传递的消息变得简单而且大幅减少。

用途和缺点

1、中介者常常被用来协调相关的GUI组件。

2、中介者的缺点是,如果设计不当,中介者对象本身会变得过于复杂。

备忘录

备忘录模式:当你需要让对象返回之前的状态时,就使用备忘录模式(例如,“撤销”操作)

比如我们经常玩的单机游戏,当用户进入到下一关时我们在游戏中死亡,一般复活后就是从这关游戏的最开始复活。而对于我们进入到下一关时就是一个备忘录模式,让我们停留在上一次过关的关卡上。

备忘录模式有两个目标:

  • 储存系统关键对象的重要状态。
  • 维护关键对象的封装。

不要忘记了单一职责,不要把保持状态的工作和关键对象混为一谈。这个专门掌握状态的对象,就称为备忘录

设计类图:

优点:

1、将被存储的状态放在外面,不要和关键对象混在一起,可以帮助维护内聚。

2、保持关键对象的数据封装。

3、提供能容易实现的恢复能力。

用途和缺点:

1、备忘录用于存储状态。

2、使用备忘录的缺点:存储和恢复状态的过程可能相当耗时。

3、在系统设计时可以考虑使用序列化(serialization)机制存储系统的对象。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 中介者
  • 备忘录
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档