设计模式(六、行为型-观察者模式)

 1 /**
 2  * 被观察者
 3  *
 4  * @author zhoude
 5  * @date 2020/4/12 14:48
 6  */
 7 public interface Observer {
 8
 9     /**
10      * 接受观察者的通知消息
11      *
12      * @param message 通知消息
13      */
14     void notify(String message);
15 }
 1 public interface Subject {
 2
 3     /**
 4      * 添加一个被观察者
 5      *
 6      * @param observer 被观察者
 7      */
 8     void addObserver(Observer observer);
 9
10     /**
11      * 移除一个被观察者
12      *
13      * @param observer 被观察者
14      */
15     void removeObserver(Observer observer);
16
17     /**
18      * 给被观察者发送消息
19      *
20      * @param message 通知消息
21      */
22     void notifyObservers(String message);
23 }
 1 public class SubjectImpl implements Subject {
 2
 3     private List<Observer> observers = new ArrayList<>();
 4
 5     @Override
 6     public void addObserver(Observer observer) {
 7         observers.add(observer);
 8     }
 9
10     @Override
11     public void removeObserver(Observer observer) {
12         observers.remove(observer);
13     }
14
15     @Override
16     public void notifyObservers(String message) {
17         for (Observer observer : observers) {
18             observer.notify(message);
19         }
20     }
21 }
1 public class ObserverImpl1 implements Observer {
2
3     @Override
4     public void notify(String message) {
5         System.err.println("observer1 message:" + message);
6     }
7 }
1 public class ObserverImpl2 implements Observer {
2
3     @Override
4     public void notify(String message) {
5         System.err.println("observer2 message:" + message);
6     }
7 }
1 public class Test {
2
3     public static void main(String[] args) {
4         Subject subject = new SubjectImpl();
5         subject.addObserver(new ObserverImpl1());
6         subject.addObserver(new ObserverImpl2());
7         subject.notifyObservers("msg");
8     }
9 }

原文地址:https://www.cnblogs.com/bzfsdr/p/12685451.html

时间: 2024-10-16 08:38:38

设计模式(六、行为型-观察者模式)的相关文章

设计模式 ( 十七 ):Observer 观察者模式 -- 行为型

1.概述 一些面向对象的编程方式,提供了一种构建对象间复杂网络互连的能力.当对象们连接在一起时,它们就可以相互提供服务和信息. 通常来说,当某个对象的状态发生改变时,你仍然需要对象之间能互相通信.但是出于各种原因,你也许并不愿意因为代码环境的改变而对代码做大的修改.也许,你只想根据你的具体应用环境而改进通信代码.或者,你只想简单的重新构造通信代码来避免类和类之间的相互依赖与相互从属. 2.问题 当一个对象的状态发生改变时,你如何通知其他对象?是否需要一个动态方案――一个就像允许脚本的执行一样,允

&quot;围观&quot;设计模式(19)--行为型之观察者模式(Observer Pattern)

观察者模式是软件设计模式的一种.在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知.这通常透过呼叫各观察者所提供的方法来实现.此种模式通常被用来实时事件处理系统.----WIKIPEDIA 个人理解 观察者模式,就是使得被观察者中持有观察者的对象实例,在发生某些事件的时候,通过notify"通知"观察者,完成相应的操作,他也叫作发布-订阅模式,定义对象间一对多的依赖关系,使得被观察者对象产生动作,即可通知其依赖的对象该被观察者发生了变更. 案例

Java经典23种设计模式之行为型模式(三)

本文接着介绍11种行为型模式里的备忘录模式.观察者模式.状态模式. 一.备忘录模式 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可以将该对象恢复到原先保存的状态.还是比较好理解的. 1.Memento 备忘录存储原发器对象的内部状态,这个类就是要存储的对象的状态.状态需要多少个变量,在Memento里就写多少个变量. public class Memento { private String state; public Meme*to(String st

java设计模式-创建型

1.设计模式介绍 1.1 设计模式的概念 1.设计模式是一套被反复使用,多数人知晓,经过分类编码目的的优秀代码设计经验的总结. 2.设计模式贯彻的原理:面向接口编程,而不是面向对象实现. 3.设计模式的目标:降低耦合性,增强灵活性. 1.2 设计模式的要素 1.模式名称 2.问题 3.环境与初始环境 4.解决方案 5.效果 6.举例 7.末态环境 8.推理 9.其他有关模式 10.已知的应用 1.3设计模式的分类 1.创建型 1.1  单例模式 1.2  工厂模式 1.3  抽象工厂模式 1.4

&quot;围观&quot;设计模式(22)--行为型之职责链模式(Chain Of Responsibility Pattern)

责任链模式在面向对象程式设计里是一种软件设计模式,它包含了一些命令对象和一系列的处理对象.每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象.该模式还描述了往该处理链的末尾添加新的处理对象的方法.----WIKIPEDIA 个人的理解 责任链模式用到了链表的数据结构,存在一定的次序性,A->B->C这样的一条链表,在责任链模式中,请求交给A进行处理,如果A处理不了交给B,B如果处理的了进行处理,否则交给C处理,模式的关键在于构建这样的一个链表

Java设计模式(八)观察者模式 迭代器模式

(十五)观察者模式 观察者模式,定义对象间一对多关系,一个对象状态发生改变,所有依赖于它的对象都收到通知并且自动更新,观察者与被观察者分开.例如邮件订阅.RSS订阅,如果有更新就会邮件通知你. interface Observers{ public void update(); } class Observer1 implements Observers{ public void update(){ System.out.println("observer1 has received"

&quot;围观&quot;设计模式(31)--行为型设计模式总结(模板、观察者、策略、状态、责任链、命令、访问者、中介者、备忘录、解释器)

设计模式源代码下载 设计模式源代码下载 1  模板方法模式 模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式.让子类别在不改变算法架构的情况下,重新定义算法中的某些步骤.----WIKIPEDIA 个人理解 模板方法模式相对而言比较简单,一般的都是由抽象类定义好模板方法,然后,子类通过继承并实现其父类中定义好的模板中需要执行的具体的方法,调用子类对象的模板方法时,会执行该类中的具体实现的方法.这个模式我个人的感觉有点像是面向过程的操作,执行完一道工序,接着下一道工序.

Java经典23种设计模式之行为型模式(一)

行为型设计模式有11种,分别是Chain of Responsibility ( 责任链模式 ).Command ( 命令模式 ).Interpreter ( 解释器模式 ) .Iterator ( 迭代器模式 ).Mediator ( 中介者模式 ) .Memento ( 备忘录模式 ) .Observer ( 观察者模式 ).State ( 状态模式 ) .Strategy ( 策略模式 ).TemplateMethod ( 模板方法 ).Visitor ( 访问者模式 ),本文介绍这11种

设计模式3 创建型模型

设计模式3 创建型模型 目录: 简单工厂模式 工厂方法模式 抽象工厂模式 单例模式 简单工厂 模型 [email protected]:~$ cat main.cpp  //设计模式:简单工厂 模型 #include<iostream> using namespace std; class Fruit { public: Fruit(string kind) { this->kind = kind; if(kind == "apple") {} else if (ki

设计模式之创建型模式(上)

没有总结的学习不算学习,这一个月的学习可谓收获多多啊,接下来与大家分享一下. 一.设计模式的分类 总体来说设计模式分为三大类: 1.创建型模式,共五种. 2.结构型模式,共七种. 3.行为型模式,共十一种. 首先研究创建型模式 二. 概述 创建型模式,就是用来创建对象的模式,抽象了实例化的过程.它帮助一个系统独 立于如何创建.组合和表示它的那些对象. 三. 为什么需要创建型模式 所有的创建型模式都有两个永恒的主旋律: 第一,它们都将系统使用哪些具体类的信息封装起来: 第二,它们隐藏了这些类的实例