观察者模式(Observer)
来源:互联网 发布:avmoo 2016.7最新域名 编辑:程序博客网 时间:2024/06/05 04:43
观察者模式中通常有两个基本的概念主题:观察者和被观察者。当被观察者状态发生改变时,需要通知相应的观察者,当然,每个被观察者所对应的观察者可能不知一个,他们之间是1:n的关系。用专业一点的术语对观察者模式的描述为:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化。
观察者模式的一般实现方式如下:
1.定义观察者所具有的共同的接口:
1 interface Observer {2 public void update();3 }
2.定义两个观察者:
1 class ObserverA implements Observer {2 3 @Override4 public void update() {5 System.out.println("ObserverA has received!");6 }7 }
1 class ObserverB implements Observer {2 3 @Override4 public void update() {5 System.out.println("ObserverB has received!");6 }7 }
3.定义被观察者所具有的抽象父类:
1 abstract class Observable { 2 3 private Vector<Observer> vector = new Vector<Observer>(); 4 5 public void add(Observer observer) { 6 vector.add(observer); 7 } 8 9 public void del(Observer observer) {10 vector.remove(observer);11 }12 13 public void notifyObservers() {14 Enumeration<Observer> enumo = vector.elements();15 while (enumo.hasMoreElements()) {16 enumo.nextElement().update();17 }18 }19 20 public void operation() {21 22 }23 }
4.定义具体的被观察者:
class ConcretObservable extends Observable{ @Override public void operation() { System.out.println("update self!"); notifyObservers(); } }
5.测试:
1 public class ObserverTest { 2 3 public static void main(String[] args) { 4 Observable sub = new ConcretObservable(); 5 sub.add(new ObserverA()); 6 sub.add(new ObserverB()); 7 8 sub.operation(); 9 } 10 11 }
6.原文博客地址
http://www.cnblogs.com/lwbqqyumidi/p/3784932.html
0 0
- 观察者模式(OBSERVER)
- 观察者(Observer)模式
- 观察者(Observer)模式
- 观察者(Observer)模式
- 观察者(Observer)模式
- 观察者模式(Observer)
- 观察者模式(Observer)
- Observer(观察者)模式
- 观察者模式(Observer)
- Observer(观察者模式)
- 观察者模式(Observer)
- 观察者模式(Observer)
- 观察者模式(Observer)
- 观察者模式(Observer)
- 观察者模式(Observer)
- 观察者(Observer)模式
- 观察者模式(Observer)
- 观察者模式(Observer)
- Java并发性和多线程介绍目录
- unity3D-游戏/AR/VR在线就业班 C#入门构造学习笔记
- 中缀表达式的值
- 【VS开发】【CUDA开发】如何在MFC中调用CUDA
- Unity获取本机IP地址
- 观察者模式(Observer)
- <转>Apache Sentry安装及简单使用
- Neutron enable_new_agents
- 转载 java 堆栈的区别
- Android中persistent属性用法详解
- 单词(Unity)
- 使用Gson将对象类转成Json对象时出现\u003d 、\u0027等情况的问题
- centos下/etc/sysconfig/下找不到iptables文件
- ngrok 本机代码部署外网访问神器