Java设计模式精讲—课程笔记9(第21章 观察者模式 + 第22章 备忘录模式 + 第23章 命令模式 + 第24章 中介者模式)

21 观察者模式讲解+Coding+源码解析

21.1 观察者模式讲解

  1. 定义:定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有依赖者(观察者)都会收到通知并更新;
    类型:行为型;
  2. 适用场景:
    关联行为场景,建立一套触发机制;
  3. 优点:
    观察者和被观察者之间建立一个抽象的耦合;
    观察者模式支持广播通信;
  4. 缺点:
    观察者之间有过多的细节依赖、提高时间消耗及程序复杂度;
    使用要得当,要避免循环调用;

21.2 观察者模式coding

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

21.3 观察者模式源码解析-jdk-guava

  1. java.awt.Event -> EventListener;
  2. guava: EventBus -> GuavaEvent(自行创建)通过subscribe注解实现;
    在这里插入图片描述
    在这里插入图片描述

22 备忘录模式讲解+Coding+源码解析

22.1 备忘录模式讲解

  1. 定义:保存一个对象的某个状态,以便在适当的时候恢复对象;
    “后悔药”
    类型:行为型;
  2. 适用场景:
    保存及恢复数据相关业务场景;
    后悔的时候,即想恢复到之前的状态;
  3. 优点:
    为用户提供一种可恢复机制;
    存档信息的封装;
  4. 缺点:
    资源占用;
  5. 相关设计模式:
    备忘录模式和状态模式:备忘录模式用实例表示状态,存档的是实例;状态模式用类表示状态;

22.2 备忘录模式coding

  1. 业务场景:支持网站暂存多个版本的手记;
    Article类里:
    在这里插入图片描述
    ArticleMemento里:不需要set方法,只能由Article创建
    在这里插入图片描述
    ArticleMementoManager里:通过栈类型管理Memento

在这里插入图片描述
在这里插入图片描述

22.3 备忘录模式源码解析-spring

  1. (jdk中暂未找到典型的备忘录模式实现案例)
  2. spring-webflow
    在这里插入图片描述

23 命令模式讲解+Coding+源码解析

23.1 命令模式讲解

  1. 定义:将“请求”封装成对象,以便使用不同的请求;
    命令模式解决了应用程序中对象的职责以及它们之间的通信方式(解耦了发送者和接收者);
    类型:行为型;
  2. 适用场景:
    请求调用者和请求接收者需要解耦,使得调用者和接收者不直接交互;
    需要抽象出等待执行的行为;
  3. 优点:
    降低耦合;
    容易扩展新命令或者一组命令;
  4. 缺点:
    命令的无限扩展会增加类的数量,提高系统实现复杂度;
  5. 相关设计模式:
    命令模式和备忘录模式:经常结合使用,可以使用备忘录保存命令的历史记录。

23.2 命令模式coding

  1. 业务场景:课程视频的开放与关闭;
    在这里插入图片描述
    在这里插入图片描述

23.3 命令模式源码-jdk-junit

  1. Runnable
  2. junit.framework.Test
    经常通过继承TestCase类实现
    在这里插入图片描述

24 中介者模式讲解+Coding+源码解析

24.1 中介者模式讲解

  1. 定义一个 封装一组对象如何交互的对象;
    通过使对象明确地相互引用来促进松散耦合,并允许独立地改变它们的交互;
    类型:行为型;
  2. 适用场景:
    系统中对象之间存在复杂的引用关系,产生的相互依赖关系结构混乱且难以理解;
    交互的公共行为,如果需要改变行为则可以增加新的中介者类;
  3. 优点:
    将一对多转化成了一对一,降低程序复杂度;
    类之间解耦;
  4. 缺点:
    中介者过多,导致系统复杂;
  5. 相关设计模式:
    中介者模式和观察者模式:可以使用观察者模式实现中介者模式中角色间的通信;

24.2 中介者模式coding

  1. 业务场景:学习群;
    在这里插入图片描述
    在这里插入图片描述

24.3 中介者源码解析-jdk

  1. java.util.Timer中介者,TimerTask被协调的类;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值