设计模式(4)-行为型-观察者模式(Observer)
2016-08-01 02:49
549 查看
意图:
有时也被称作发布/订阅模式。
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
个人理解:
首先,他们之间的关系为一个”一对多”的关系,并且代码上实现这个关系。
其次,在”一对多”的关系的基础上,“一”的改变能够影响到“多”的改变,并且代码上也实现这个关系。
适用性:
当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。
当对一个对象的改变需要同时改变其它对象, 而不知道具体有多少对象有待改变。
当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之, 你不希望这些对象是紧密耦合的。
简单代码,便于理解:
有时也被称作发布/订阅模式。
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
个人理解:
首先,他们之间的关系为一个”一对多”的关系,并且代码上实现这个关系。
其次,在”一对多”的关系的基础上,“一”的改变能够影响到“多”的改变,并且代码上也实现这个关系。
适用性:
当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。
当对一个对象的改变需要同时改变其它对象, 而不知道具体有多少对象有待改变。
当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之, 你不希望这些对象是紧密耦合的。
简单代码,便于理解:
/// 抽象主题 public interface Subject { /// 增加观察者 public void attach(Observer observer); /// 移除观察者 public void detach(Observer observer); //当“一”的对象的状态发生改变时, 所有依赖于它的“多”对象都得到通知并被自动更新。 public void notify(); } /// 具体主题,可理解为“一对多”中的“一”方 public class ConcreteSubject implements Subject { private List<Observer> observers = new ArrayList<Observer>(); /// 增加观察者 public void attach(Observer observer) { this.observers.add(observer); } /// 移除观察者 public void detach(Observer observer) { this.observers.remove(observer); } //当“一”的对象的状态发生改变时, 所有依赖于它的“多”对象都得到通知并被自动更新。 public void Notify() { for (Observer o : observers) { o.update(); } } } /// 抽象观察者,可理解为一对多的多方。 public interface Observer { //更新状态,“一”方状态发生改变时会调用此方法,完成多对象都得到通知并被更新。 public void update(); } /// 具体观察者,可理解为一对多的多方 public class ConcreteSubject1 implements Observer { /// 更新状态,“一”方状态发生改变时会调用此方法,完成“多”对象都得到通知并被更新。 public void Update() { System.out.println("ConcreteSubject1更新状态!"); } } /// 具体观察者 public class ConcreteSubject2 implements Observer { /// 更新状态,“一”方状态发生改变时会调用此方法,完成“多”对象都得到通知并被更新。 public void Update() { System.out.println("ConcreteSubject2更新状态!"); } }
相关文章推荐
- 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)
- 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)
- 设计模式 ( 十六 ) 观察者模式Observer(对象行为型)
- JAVA设计模式(19):行为型-观察者模式(Observer)
- 设计模式笔记--行为型模式之七Observer--观察者
- 设计模式(4)-行为型-观察者模式(Observer)
- 设计模式13---设计模式之观察者模式(Observer)(行为型)
- 设计模式18:Observer 观察者模式(行为型模式)
- 设计模式(4)-行为型-观察者模式(Observer)
- 设计模式笔记 18. Observer 观察者模式(行为型模式)
- C#面向对象模式设计第十九讲:Observer 观察者模式(行为型模式)
- 设计模式—行为型-Observer(观察者)
- [导入]C#面向对象设计模式纵横谈(19):(行为型模式) Observer 观察者模式.zip(10.27 MB)
- 设计模式-- 观察者模式Observer(对象行为型)
- 【行为型模式】观察者模式(Observer)之23种java设计模式
- 设计模式13---设计模式之观察者模式(Observer)(行为型)
- 设计模式学习之观察者模式(Observer,行为型模式)(7)
- [设计模式笔记]三. 行为型模式--21. Observer模式(观察者)对象行为型模式(一)
- 设计模式-行为型-观察者模式(Observer)
- 二十二.行为型设计模式——Observer Pattern(观察者模式)