首页 > 其他分享 >设计模式学习篇-Observer观察者模式

设计模式学习篇-Observer观察者模式

时间:2022-11-19 22:37:31浏览次数:59  
标签:Observer 角色 对象 观察者 接口 模式 设计模式


观察者模式:定义对象间一对多相依关系;使得每当一个对象改变状态则其相关的对象皆得到通知并自动更新。

本质:触发联动。属于行为模式。观察者(Observer)模式又名发布-订阅(Publish/Subscribe)模式。

 

下面我们就来看看观察者模式的组成部分。


1)        抽象目标角色(Subject):目标角色知道它的观察者,可以有任意多个观察者观察同一个目标。并且提供注册和删除观察者对象的接口。目标角色往往由抽象类或者接口来实现。


2)        抽象观察者角色(Observer):为那些在目标发生改变时需要获得通知的对象定义一个更新接口。抽象观察者角色主要由抽象类或者接口来实现。


3)        具体目标角色(Concrete Subject):将有关状态存入各个Concrete Observer对象。当它的状态发生改变时, 向它的各个观察者发出通知。


4)        具体观察者角色(Concrete Observer):存储有关状态,这些状态应与目标的状态保持一致。实现Observer的更新接口以使自身状态与目标的状态保持一致。在本角色内也可以维护一个指向Concrete Subject对象的引用。


GOF给出了以下使用观察者模式的情况:


1)        当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。


2)        当对一个对象的改变需要同时改变其它对象, 而不知道具体有多少对象有待改变。


3)        当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之, 你不希望这些对象是紧密耦合的。


 


JAVA 中的观察者模式:


 主题:java.util.Observable 类


 


 观察者:java.util.Observer 接口


 


 


 


类图如下:

标签:Observer,角色,对象,观察者,接口,模式,设计模式
From: https://blog.51cto.com/u_15458282/5870771

相关文章

  • 谈谈我工作中的23个设计模式
      序从基础的角度看,设计模式是研究类本身或者类与类之间的协作模式,是进行抽象归纳的一个很好的速成思路。后面阅读设计模式后,为了加深理解,对相关图片进行了描绘和微......
  • 【博学谷学习记录】超强总结,用心分享 | 单例设计模式总结
    单例设计模式单例模式(SingletonPattern)涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不......
  • Java进阶篇——设计模式
    设计模式一、代理模式使用代理类对真实对象进行代理,包括真实对象方法的调用、功能的扩展等。访问的时候也只能访问到代理对象,既保护了真实对象同时可以在原始对象上进行......
  • 04.从架构层面看设计模式(2)
                                     ......
  • 观察者模式
    被观察者usingUnityEngine;//声明一个委托publicdelegatevoidTesk();//老板publicclassBoss:MonoBehaviour{//创建一个委托publicstaticTes......
  • 软件设计模式白话文系列(十三)模版方法模式
    1、模式描述模版方法模式属于类行为型模式,在父类中定义业务框架,并将某些步骤的实现延迟到子类实现,允许子类在不影响框架接口的的情况下,重写某些步骤。2、模式结构模版......
  • 03.从架构层面看设计模式(1)
                                工厂模式底层就是if判断然后创建不同的产品           ......
  • 前端设计模式
    1.什么是设计模式?设计模式是一套被反复使用、多数人知晓、经过分类编目的、代码设计经验的总结。它是为了可重用代码,让代码更容易的被他人理解并保证代码的可靠性。就像......
  • 软件设计模式白话文系列(十二)组合模式
    1、模式描述组合模式属于结构型模式,把多个对象组成树状结构来表示局部与整体,这样用户可以以相同的方式对待单个对象和组合对象。需要注意的是这里的组合和之前系列中,我们......
  • 设计模式 -- 工厂模式
    简单工厂模式简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式(静态工厂模式):定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)......