行为型模式----观察者模式(二)

六大方面:

一、目标与观察者之间的关系;

二、单向依赖:

只能是观察者依赖目标对象;主动权在目标这里;

三、命令的建议:

第一、 目标接口的定义,建议在名称后面跟Subject;

第二、观察者接口的定义,建议在名称后面跟Observer;

第三、观察者接口的更新方法,建议名称为update;

四、触发通知的时机;

先设置数据;再通知观察者;

五、.观察者模式的调用顺序示意图;

六、通知的顺序;

多个观察者,顺序不确定;

实现观察者模式的两种方式:推模型和拉模型;

推模型:目标对象主动向观察者推送目标的详细信息;

推送的信息通常是目标对象的全部或者部分数据;

拉模型:目标对象在通知观察者的时候,只传递少量信息;

如果观察者需要更具体的信息。由观察者主动到目标对象去获取;相当于是观察者向目标对象拉数据;

利用java提供的观察者实现;

在java.util包中

时间: 2024-10-10 20:06:35

行为型模式----观察者模式(二)的相关文章

第21章 行为型模式—观察者模式

1. 观察者模式(Observer Pattern)的定义 (1)定义:定义对象间的一种一对多的依赖关系.当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. (2)观察者模式的结构和说明(拉模型) ①Subject:目标对象,通常具如的功能:一个目标可以被多个观察者观察:目标提供对观察者的注册和退订的维护:当目标的状态发生变化时,目标负责通知所有注册的.有效的观察者. ②Observer:定义观察者的接口,提供目标通知时对应的更新方法,这个更新方法进行相应的业务处理,可以在这

设计模式之“行为型模式”(二)

行为型模式第二部分:解释器模式.中介者模式.访问者模式.策略模式.备忘录模式.迭代器模式. 解释器模式 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 使用时期 如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子.这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题. 中介者模式 用一个中介对象来封装一系列的对象交互.中介者使各个对象不需要显试地相互引用,从而使其耦合松散,而且可以独立地改

设计模式——行为型模式(二)

6. Iterator——对象行为型模式 作用: 提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示 UML结构图:  实现: typedef int DATA; class Iterator; //容器的抽象基类 class Aggregate { public: virtual ~Aggregate(){} virtual Iterator* CreateIterator(Aggregate* pAggregate)=0; virtual int GetSize()

设计模式-行为型模式-观察者模式

观察者模式 观察者模式有时也被称为发布/订阅模式,该模式定义了一种一对多的依赖关系,可以让多个观察者对象同时监听某一个主题对象,当主题对象的状态发生变化时,通知所有观察者对象,使它们能够自动更新自己.例如某个Text文本框的text属性绑定到X数据源上,当X数据源发生更改时自动同步更新Text的值.被观察者要维护一个观察者的List,逐个通知可能存在性能的问题(比如List很长,或者update的逻辑耗时等). //观察者接口public interface IWatcher { public

20 行为型模式-----观察者模式

模式动机(Observer Pattern):将数据的存储与显示进行分离设计,能够很好地降低模块直接的耦合性.但是我们在后台更新数据时总希望前台的显示也做出相应的变化,观察者模式很好地解决了这个问题. 观察者模式定义了对象之间的一种一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动更新状态,即对于一份后台数据,可以存在多个显示器负责显示并同时接收后台数据变更的通知. 观察者模式包含如下参与者: Subject: 1> 可以有任意多个观察者同时观察同一目标 2> 可

设计模式-行为型模式(二)

七.观察者模式 观察者模式是指被观察者的状态发生改变时,系统基于事件驱动理论将其状态通知到订阅其状态的观察者对象中,以完成状态的修改和事件传播. 在观察者模式中,观察者和被观察者是抽象耦合的,两者之间建立了一套事件触发机制,以降低二者的耦合度. 观察者模式具体UML: (1)定义抽象主题Subject: public abstract class Subject { protected List<Observer> observers = new ArrayList<Observer&g

创建型模式(二)工厂模式

一句话的概要 把具体实现推迟到子类中,工厂类不在负责产品的创建,只是给出具体工厂必须实现的接口. 剧情 上篇说过,简单工厂的方法其实是违反了设计原则的.所以我们就把味多美这个工厂类抽象一下,并且派生专门做某种蛋糕的工厂. 这样在添加新的程序的时候就不会再需要修改味多美这个工厂类了. 回顾一下剧情: 小明是高中的小屌丝,她喜欢隔壁班的女神王小花.结果迟迟不敢表白. 今天正好赶上王小花的生日,小明打算买去味多美个蛋糕给她吃,讨好一下.但是这次小明知道一个专门做黑森林蛋糕的味多美.打算去这家味多美去买

行为型模式(二)命令模式

一句话的概要 将请求封装成对象,支持请求的变化.实现请求者与执行者的解耦操作. 剧情 小明今天很开心,就决定要请客吃饭.让小刚帮忙给酒店订一下餐. 用命令者设计模式,可以分为三块,小明.酒店订餐.小刚.分别封装成对象,则可以完成解耦. 我们下面用命令者模式来构造以上场景. 任务一:创建小刚这个执行者 我们先要创建小刚这个执行者,并且让他有一个订餐的功能. public class SomeG { public void OrderMeal() { Console.WriteLine("好吧,我去

(五)(创建型模式)原型模式

一.原型模式(prototype pattern): 使用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.原型模式是一种对象创建型模式. 二.应用场景: 对象的创建非常复杂,可以使用原型模式快捷的创建对象.在运行过程中不知道对象的具体类型,可使用原型模式创建一个相同类型的对象,或者在运行过程中动态的获取到一个对象的状态. 三.应用实例: 动物界的掌控者Tom,想要再建造一辆奥迪车,但是再去生产比较麻烦,有没有别的方法快速获取呢? 四.方案: UML图: 代码1: package c