设计模式(15)-观察者模式(Observer)
2016-09-12 01:42
309 查看
设计模式(14)-模板方法模式(Template Method)
15、观察者模式(Observer)
观察者模式很好理解,类似于邮件订阅和RSS订阅,当我们浏览一些博客时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系。
我们在GUI那一章学习的事件监听机制就是可以这种设置模式来构建的代码
例子:
15、观察者模式(Observer)
观察者模式很好理解,类似于邮件订阅和RSS订阅,当我们浏览一些博客时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系。
我们在GUI那一章学习的事件监听机制就是可以这种设置模式来构建的代码
例子:
//观察者接口 public interface Observer { public void update(); }
//观察者1 public class Observer1 implements Observer { public void update() { System.out.println("observer1 has received!"); } }
//观察者2 public class Observer2 implements Observer { public void update() { System.out.println("observer2 has received!"); } }
//被观察者接口 public interface Subject { /*增加观察者*/ public void add(Observer observer); /*删除观察者*/ public void del(Observer observer); /*通知所有的观察者*/ public void notifyObservers(); /*自身的操作*/ public void operation(); }
//被观察者的一个抽象实现 提供基本的实现 public abstract class AbstractSubject implements Subject { 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() { Iterator<Observer> it = vector.iterator(); while(it.hasNext()){ Observer next = it.next(); next.update(); } } }
//我们自己的一个被观察者实现 里面可以有我们自己的各种属性和方法 public class MySubject extends AbstractSubject { public void operation() { System.out.println("update self!"); notifyObservers(); } }
//测试类 public class Test { public static void main(String[] args) { Subject sub = new MySubject(); sub.add(new Observer1()); sub.add(new Observer2()); sub.operation(); } }
相关文章推荐
- Head First 设计模式 (二) 观察者模式(observer pattern) C++实现
- 设计模式之(十、观察者模式(ObServer)/发布订阅模式(Pblish/Subscribe))
- 设计模式(16) 观察者模式(OBSERVER)C++实现
- 设计模式(15) - Observer观察者模式
- 设计模式(十七)-观察者模式(Observer Pattern)——发送状态变化通知
- 设计模式(16)-观察者模式(Observer)
- 观察者模式observer(行为型设计模式)
- java设计模式15——观察者模式(Observer)
- 设计模式的征途—15.观察者(Observer)模式
- 设计模式学习—观察者模式(Observer Design Pattern)
- 设计模式 之 《观察者模式 (Observer)》
- Java基础再回首之设计模式系列②-----Observer 观察者模式(案列教程,附带demo)
- 观察者模式(设计模式_15)
- 观察者模式(Observer Pattern) .NET设计模式
- JAVA设计模式(15) —<行为型>观察者模式(Observer)
- 设计模式理解 - 伟大的【Observer 观察者模式】
- Java设计模式之Observer(观察者)模式
- .NET设计模式(15):结构型模式专题总结
- 设计模式笔记(11 OBSERVER & STATE)
- 设计模式之Observer