Observer模式
Observer模式的功用,是希望两个(或多个)对象,我们称之为Subject和Observer,当一方的状态发生改变的时候,另一方能够得到通知。也就是说,作为Observer的一方,能够监视到Subject的某个特定的状态变化,并为之做出反应。
Java代码实现
import java.util.Observable;
//被观察的对象,需要继承 Observable 而且在方法中,必须要this.setChanged(),
//只有这样,观察者才能被通知到
public class SubjectObservable extends Observable{
public void
changeDate(){
System.out.println("SubjectObservable
changeDate");
this.setChanged();
}
}
class Subject{
SubjectObservable f = new
SubjectObservable();
//注册观察者
public void
registerObserver(java.util.Observer o){
f.addObserver(o);
}
void
changeSubject(){
f.changeDate();
//通知观察者,这里的通知,只有f的this.setChanged()触发后才生效。
f.notifyObservers();
}
}
//一号观察者,需要实现 java.util.Observer ,并且 要重写update() 方法
class SubjectObserver
implements java.util.Observer {
public void update(Observable
o, Object arg) {
SubjectObservable
subject=(SubjectObservable) o;
System.out.println("SubjectObserver work
");
}
}
//二号观察者,同样需要实现 java.util.Observer ,并且 要重写update()
方法
class SubjectObserver2
implements java.util.Observer {
public void update(Observable
o, Object arg) {
SubjectObservable
subject=(SubjectObservable) o;
System.out.println("SubjectObserver2 work
");
}
}
Main函数
public
static void main(String args[]){
Subject s =
new Subject();
SubjectObserver fm = new SubjectObserver();
SubjectObserver2 fm2 = new SubjectObserver2();
//给s对象注册2个观察者
s.registerObserver(fm2);
s.registerObserver(fm);
s.changeSubject();
}
执行结果:
SubjectObservable changeDate
SubjectObserver work
SubjectObserver2 work
分享到:
相关推荐
用c++和lua实现的观察者模式小栗子,其中c++版本参考了别人的实现
结合微信公众号讲解观察者模式,生动形象,关键是上手快啊
观察者模式 概述 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 适用性 1.当一个抽象模型有两个方面,其中一个方面依赖于另一方面。 将这二者封装...
c++设计模式-行为型模式-观察者模式;qt工程;c++简单源码; 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式...
设计模式C++学习之观察者模式(Observer)
C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式 (Level 300)
观察者模式(Observer) 用意:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。
观察者模式通常的叫法叫做订阅-发布模式,类似于报刊杂志的订阅,观察者和被观察者就是读者和邮局的关系,读者先要在邮局订阅想要的报刊,当报刊发行时,邮局会将报刊邮寄到读者家里。观察者(Observer)和被观察者...
NULL 博文链接:https://lgd-java2eye.iteye.com/blog/760350
我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...
C#面向对象设计模式 (行为型模式) Observer 观察者模式 视频讲座下载
定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。
设计模式内部培训资料-详细介绍了观察者模式。
Observer (观察者模式) 又叫做发布/订阅(Publish/Subscribe)模式。 当一个对象的改变同时会影响其他对象的行为的时候,可以使用此设计模式。 l 主题对象 :一个需要被关注的主题对象,这个主题对象改变会影响...
5.7 OBSERVER(观察者)—对象行为型模式 194 5.8 STATE(状态)—对象行为型模式 201 5.9 STRATEGY(策略)—对象行为型模式 208 5.10 TEMPLATE METHOD(模板方法)—类行为型模式 214 5.11 VISITOR(访问者)—...
在 C#中的委托和事件 一文的后半部分,我向大家讲述了Observer(观察者)模式,并使用委托和事件实现了这个模式。实际上,不使用委托和事件,一样可以实现Observer模式。在本文中,我将使用GOF的经典方式,再次实现一...
观察者模式(Observer Pattern)是一种对象行为型设计模式,它定义了对象之间的一对多依赖关系。 当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式通常用于实现分布式事件处理系统...
- 观察者模式(Observer) - 模板方法模式(Template Method) - 策略模式(Strategy) - 责任链模式(Chain of Responsibility) - 中介者模式(Mediator) - 访问者模式(Visitor) - 命令模式(Command) - 解释器模式...
5.7 OBSERVER(观察者)——对象行为型模式 5.8 STATE(状态)——对象行为型模式 5.9 STRATEGY(策略)——对象行为型模式 5.10 TEMPLATE METHOD(模板方法)——类行为型模式 5.11 VISITOR(访问者)——对象行为...