设计模式(二)—— 观察者模式

观察者模式类似出版社与订阅者的关系,订阅者能够收到出版社发出的消息,可以取消订阅。出版社在观察者模式中称为主题(Subject)订阅者称为观察者(Observer)。

主题可以添加观察者,如果有事件发送给观察者。一般Subject中有可以注册、移除、执行事件。Observer一般在实现接口Interface中有Update来获取事件。在观察者中有2种方

法拉和推。拉是由观察者获取所需要的主题内容,一般在Update中发送Object Subject,而推是由Subject主动发送,一般包括所需的Value。

C#中标准的委托事件参考:http://ddlovegg.me/index.php/2017/11/21/c%E5%A7%94%E6%89%98%E5%92%8C%E4%BA%8B%E4%BB%B6/

原文地址:https://www.cnblogs.com/dlvguo/p/9661362.html

时间: 2024-08-08 05:23:10

设计模式(二)—— 观察者模式的相关文章

【设计模式】观察者模式

生活中,当某件事发生时,应该通知所有的相关者.例如,上课地点有变,要通知所有学习这门课的同学. 在软件设计中,当一个对象的状态发生变化是,如何通知与它相关的所有对象,就是我们今天要谈到的观察者模式. 观察者模式 概述 定义了一种一对多的依赖关系.让多个观察者对象同事监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有的观察者对象,使它们能够自动更新自己. 实际上,观察者模式所做的工作就是在解除耦合.让耦合的双方都依赖于抽象,而不是依赖于具体.从而使得各自的变化都不会影响另一边的变化. 结

设计模式 1 ——观察者模式

设计模式目录: 设计模式 1 ——观察者模式 一.基本定义 何谓观察者模式?观察者模式定义了对象之间的一对多依赖关系,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并且自动更新. 在这里,发生改变的对象称之为观察目标,而被通知的对象称之为观察者.一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,所以么可以根据需要增加和删除观察者,使得系统更易于扩展. 观察者模式又称为发布-订阅模式. 二.基本结构 首先先看观察者模式的UML类图. 分析: Subject:目标.他把所有

C#设计模式(17)——观察者模式(Observer Pattern)

原文:C#设计模式(17)--观察者模式(Observer Pattern) 一.引言 在现实生活中,处处可见观察者模式,例如,微信中的订阅号,订阅博客和QQ微博中关注好友,这些都属于观察者模式的应用.在这一章将分享我对观察者模式的理解,废话不多说了,直接进入今天的主题. 二. 观察者模式的介绍 2.1 观察者模式的定义 从生活中的例子可以看出,只要对订阅号进行关注的客户端,如果订阅号有什么更新,就会直接推送给订阅了的用户.从中,我们就可以得出观察者模式的定义. 观察者模式定义了一种一对多的依赖

设计模式:观察者模式--Observer

一.什么是观察者模式 1.生活中的观察者模式 1.警察抓小偷 在现实生活中,警察抓小偷是一个典型的观察者模式「这以一个惯犯在街道逛街然后被抓为例子」,这里小偷就是被观察者,各个干警就是观察者,干警时时观察着小偷,当小偷正在偷东西「就给干警发送出一条信号,实际上小偷不可能告诉干警我有偷东西」,干警收到信号,出击抓小偷.这就是一个观察者模式 2.装模作样写作业 小时候家里家活比较多,爸妈让我去干活的时候,我偶尔会说我要学习「其实不想去干活,当然只是偶尔,我还是常常干家务的」,然后爸妈就去地里了,我一

设计模式之观察者模式(三)

又和大家见面了.首先,和大家说声抱歉,之前的几篇文章,可能条理清晰之类的做的不太好,每篇文章的篇幅也比较长,小编在收到读者的建议之后, 也是认真的思考了一番.之前的想法是尽量把一个模块介绍完,没想到一个模块写着写着就写长了.在之后的文章里,需要认真分段,做到能简洁就简洁,能分块就分块,在利用大家碎片化的时间里,力争短小精悍又能收获颇丰. 之前的观察者模式,介绍了自己动手编写一套观察者模式,以及使用Java内置的观察者模式来进行实现.分了两篇,并且知道了,观察者模式是基于发布和订阅的,主要由两种模

设计模式:观察者模式

设计模式:观察者模式 : http://www.cnblogs.com/li-peng/archive/2013/02/04/2892116.html 观察者模式是我们经常用的一个模式,比如在用wcf做服务的时候通知客户端做一些操作一般用设计者模式. 今天做一个订报纸的小例子来理解一下观察者模式  出版者+订阅者=观察者模式 用下边的图来说就是    人民日报+订阅者=观察者模式 只要是订阅了人民日报的人,有了新报纸就会送到订阅者那里去, 当你不想订的时候取消就不订阅就不会再收到报纸了. //报

设计模式之-观察者模式

该文代码来自设计模式之惮一书. 观察者模式定义: 观察者模式也叫做发布订阅模式. 观察者模式中的角色: 1.被观察者 被观察者职责为管理观察者并通知观察者. 2.观察者 对接受到的消息进行处理. /// <summary> /// 被观察者 /// </summary> public abstract class Subject { /// <summary> /// 观察者集合 /// </summary> private List<IObserva

设计模式(16) 观察者模式(OBSERVER)C++实现

意图: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新. 动机: 将一个系统设计成一系列相互协作的类有一个常见的副作用:需要维护相关对象之间的一致性. 观察者模式定义一种交互,即发布-订阅: 一个对象当自身状态发生改变时,会发出通知,但是并不知道谁是他的接收者,但每个接收者都会接收到通知,这些接受者称为观察者. 作为对通知的响应,每个观察者都将查询目标状态,然后改变自身的状态以和目标状态进行同步. 使用场景: 使对象封装为独立的改变和使用:

&lt;&lt;Head First设计模式&gt;&gt;之观察者模式学习

1.概念 定义了对象之间的一对多依赖关系,当一个对象(主题对象)的状态改变时,它的所有依赖者(观察者对象)都会收到通知并自动更新. 2.优势 观察者模式实现了主题对象与观察者对象之间的松耦合,当有新的观察者时,无需修改主题对象的代码,只需要新的观察者对象实现接口.在程序运行的过程中,可以随时注册和删除观察者而不影响主体对象. 观察者模式使主题(Subject)对象和观察者(Observer)对象都可以被轻易地复用. 3.Java中观察者模式 Java API有内置的观察者模式,java.util

大话设计模式_观察者模式(Java代码)

观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使他们自己能够自动更新自己.简单描述:1个Subject类(可以是抽象类可以是接口),可以有多个具体Subject类(继承抽象Subject),此具体Subject持有多个观察者的引用,在此具体Subject状态发生变化的时候调用这些观察者的相应方法.另外,这些持有的引用是抽象的,不是具体的,而这些引用所指向的对象时具体的观察者(即需要作出更新的具体观察者,这些具体