观察者模式(有时又被称为发布/订阅模式)是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。
图1:观察者模式
代码实现:
1. Observer接口
public interface Observer {
void watch(String message);
}
2. Subject接口
package cn.lettoo.observe;
public interface Subject {
void addObserver(Observer observer);
void deleteObserver(Observer observer);
void notifyObservers();
}
3. Observer实现类A:
package cn.lettoo.observe;
public class ObserverA implements Observer {
@Override
public void watch(String message) {
System.out.println(String.format("This is observer A watching the message: %s", message));
}
}
4. ObserverB,代码略
5. SubjectA实现Subject接口:
package cn.lettoo.observe;
import java.util.HashSet;
import java.util.Set;
public class SubjectA implements Subject {
Set<Observer> observers = new HashSet<Observer>();
@Override
public void addObserver(Observer observer) {
observers.add(observer);
}
@Override
public void deleteObserver(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers() {
for (Observer observer : observers) {
observer.watch("MessageA");
}
}
}
6. 调用代码:
package cn.lettoo.observe;
public class Client {
public static void main(String[] args) {
Observer a = new ObserverA();
Observer b = new ObserverB();
Subject subject = new SubjectA();
subject.addObserver(a);
subject.addObserver(b);
subject.notifyObservers();
}
}
运行结果
This is observer A watching the message: MessageA
This is observer B watching the message: MessageA
- 大小: 9.2 KB
分享到:
相关推荐
期末复习资料“软件设计模式之观察者模式(复习5)代码”很可能包含了关于观察者模式的详细讲解,以及相关的代码示例,帮助学生巩固理解。 观察者模式主要由两个关键角色构成:主题(Subject)和观察者(Observer)...
11. 观察者模式:观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 12. 模板方法模式:模板方法模式定义了一个操作中的算法骨架,而将一些步骤...
#### 观察者模式的推拉差异及其适用场景 - **推模式**:具体主题将变化后的数据直接推送给观察者。 - **优点**:高效、实时性强。 - **缺点**:精确性较差,无法确保所有观察者都能收到消息。 - **适用场景**:...
模式识别是人工智能的一个...以上介绍的概念和知识点构成了哈工大模式识别期末复习讲义的主体,为理解这门课程提供了基础性的框架。掌握这些概念和方法对于深入学习模式识别乃至更广泛的人工智能领域有着重要的意义。
- 观察者模式 - 模板方法模式 - 迭代器模式 - 代理模式 - 适配器模式 2. 设计模式的基本要素: - 名字 - 意图 - 问题 - 解决方案 - 参与者与协作者 - 实现 - 一般性构造 3. 设计模式的应用场景: - ...
常见的设计模式有三大类:创建型模式(如单例模式、工厂模式、抽象工厂模式)、结构型模式(如适配器模式、装饰器模式、代理模式)和行为型模式(如观察者模式、策略模式、职责链模式)。理解并熟练运用这些模式,...
创建型模式(如工厂方法、抽象工厂、单例、建造者、原型)、结构型模式(如适配器、桥接、装饰、组合、代理、外观、享元)和行为型模式(如责任链、命令、解释器、迭代器、访问者、备忘录、观察者、状态、策略、模板...
- **行为型模式**:包括职责链模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。 #### 二、深入理解设计模式 - **创建型模式**:这...
6. 观察者模式:行为型模式,定义了一种一对多的依赖关系,当一个对象的状态改变时,所有依赖于它的对象都会得到通知并自动更新。 7. 模板方法模式:行为型模式,定义一个操作中的算法框架,将某些步骤延迟到子类中...
观察者模式定义了对象之间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。观察者模式主要包含两个角色:被观察对象(Subject)和观察者(Observer)。Subject维护一...
行为型模式包括:职责链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法和访问者模式,它们解决对象之间的交互和职责分配问题。 设计模式的应用,是将软件设计原则具体化的过程,通过模式的...
行为型模式包括模板方法模式、命令模式、状态模式、观察者模式等。 3. 为什么要使用设计模式?使用设计模式有哪些好处? 使用设计模式可以提高软件系统的可维护性、灵活性和可重用性。设计模式可以帮助开发人员...
- XX网红经济是基于互联网和社交媒体平台的新型商业模式,它依赖于粉丝经济,利用消费者的从众心理进行营销,但其可持续性仍有待观察。 - 移动互联网和大数据为XX网红经济提供了技术支持,使得个性化营销和精准推...
观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在C#中,System.ComponentModel命名空间下的INotifyPropertyChanged...
观察者模式的推拉策略是不同的。推策略中,主题(Subject)主动将更新推送给所有观察者,适合于观察者需要实时获取更新的情况。而拉策略中,观察者自己从主题中拉取数据,适用于主题不确定观察者是否需要更新的情况...
常见的设计模式分为三大类:创建型模式(如单例模式、工厂方法模式、抽象工厂模式等)、结构型模式(如适配器模式、装饰器模式、代理模式等)和行为型模式(如观察者模式、策略模式、责任链模式等)。这些模式为我们...
教师的角色不仅是指导者,也是学习过程的观察者和参与者,要根据学生的需求适时调整教学策略,促进全体学生的发展。 总的来说,小学语文复习课教学模式注重学生的主体地位,倡导自主、合作、探究的学习方式,通过...
如迭代器模式、访问者模式、状态模式、观察者模式等。 #### 四、示例代码解析 以简单的工厂模式为例,我们可以通过下面的代码片段来理解它的实现方式: ```java // 定义一个Fruit接口 public interface Fruit { ...
PPT内容包括:内附代码,实例,方便理解。 继承、封装、多态、UML ...设计模式15-观察者模式、状态模式 设计模式16-策略模式、模板方法、访问者 此PPT实例便于理解,对于深入理解OO思想有很大帮助。
- **责任型模式**:如单例模式、观察者模式,处理对象间的通信和职责分配。 - **构造型模式**:如建造者模式、工厂方法模式,专注于对象的创建过程。 - **操作型模式**:如模板方法模式、状态模式,关注对象的行为和...