设计模式总结篇系列:观察者模式(Observer)
2014-06-13 00:48
316 查看
观察者模式中通常有两个基本的概念主题:观察者和被观察者。当被观察者状态发生改变时,需要通知相应的观察者,当然,每个被观察者所对应的观察者可能不知一个,他们之间是1:n的关系。用专业一点的术语对观察者模式的描述为:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化。
观察者模式的一般实现方式如下:
1.定义观察者所具有的共同的接口:
2.定义两个观察者:
3.定义被观察者所具有的抽象父类:
4.定义具体的被观察者:
5.测试:
观察者模式的一般实现方式如下:
1.定义观察者所具有的共同的接口:
interface Observer { public void update(); }
2.定义两个观察者:
class ObserverA implements Observer { @Override public void update() { System.out.println("ObserverA has received!"); } }
class ObserverB implements Observer { @Override public void update() { System.out.println("ObserverB has received!"); } }
3.定义被观察者所具有的抽象父类:
abstract class Observable { private Vector<Observer> vector = new Vector<Observer>(); public void add(Observer observer) { vector.add(observer); } public void del(Observer observer) { vector.remove(observer); } public void notifyObservers() { Enumeration<Observer> enumo = vector.elements(); while (enumo.hasMoreElements()) { enumo.nextElement().update(); } } public void operation() { } }
4.定义具体的被观察者:
class ConcretObservable extends Observable{ @Override public void operation() { System.out.println("update self!"); notifyObservers(); } }
5.测试:
public class ObserverTest { public static void main(String[] args) { Observable sub = new ConcretObservable(); sub.add(new ObserverA()); sub.add(new ObserverB()); sub.operation(); } }
相关文章推荐
- 设计模式系列之三:观察者模式(Observer Pattern)
- 极速理解设计模式系列:2.观察者模式(Observer Pattern)
- 极速理解设计模式系列:2.观察者模式(Observer Pattern)
- 设计模式系列课程17之【观察者模式】
- 设计模式(六)[观察者(Observer)模式]
- 观察者模式设计--模式随笔系列:气象站的故事-观察者模式(Observer)
- 设计模式总结篇系列:单例模式(SingleTon)
- 设计模式系列二 观察者模式介绍
- iOS 设计模式系列:Observer – 观察者模式
- 设计模式随笔系列:气象站的故事-观察者模式(Observer)[转]
- C#设计模式系列 1 ----Observer 观察者模式 之 牛顿童鞋 的成绩
- Javascript乱弹设计模式系列(1) - 观察者模式(Observer)
- C#设计模式系列:观察者模式(Observer)
- 设计模式系列:观察者模式(Observer Pattern)
- 设计模式系列 - Observer模式
- 设计模式C++学习笔记之十六(Observer观察者模式)
- C#设计模式系列 1 ----Observer 观察者模式 之 牛顿童鞋 的成绩
- 设计模式随笔系列:气象站的故事-观察者模式(Observer)[原]
- 设计模式(二十一)观察者模式(Observer)-行为型
- 设计模式13--观察者模式(Observer)