简单理解设计模式之观察者模式
2017-10-31 11:17
483 查看
设计模式其实没有我们想的那么难!我们认真的理解好设计模式的概念,知道它到底是解决什么问题的这才能更好的掌握。下面我们来探讨下设计模式里面的观察者模式。
(1)观察者模式的概念
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
(2)理解好观察者模式的概念
我们来分解的消化这句话,首先定义对象的一对多关系,在编程开发的过程中,我们一般怎么表示一对多,是不是通过集合类来实现的呢?然后是当一个对象的状态发生改变的时候,所有依赖他的对象要得到通知和自动更新。这里有两个因素,第一是对象的状态发生了改变,即是对象的属性发生了改变,第二是当改变的时候通知依赖他的对象。
(3)通过代码来详细的实现我们的理解过程
step 1 : 创建我们的主题对象,我比较喜欢称它为老大对象。
step 2:观察者(Object),我一般喜欢称呼他为小弟模板(要加入我们必须要守规矩)
step 3 :下面就是各种小弟啦,哈哈
step 4:大哥说要干活了
current state is3919
current state is3919
current state is88919
current state is88919
好了,其实就是这样,具体的理解一定要结合开发的经验。
有不对地方的欢迎指教交流。
(1)观察者模式的概念
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
(2)理解好观察者模式的概念
我们来分解的消化这句话,首先定义对象的一对多关系,在编程开发的过程中,我们一般怎么表示一对多,是不是通过集合类来实现的呢?然后是当一个对象的状态发生改变的时候,所有依赖他的对象要得到通知和自动更新。这里有两个因素,第一是对象的状态发生了改变,即是对象的属性发生了改变,第二是当改变的时候通知依赖他的对象。
(3)通过代码来详细的实现我们的理解过程
step 1 : 创建我们的主题对象,我比较喜欢称它为老大对象。
/** * 老大对象(主题对象) * */ public class Subject { //既然是老大,那就必须要有小弟 private List<Observer> observer = new ArrayList<Observer>(); //老大的状态 private int state; public int getState(){ return state; } //当老大的状态发生改变的时候,得通知小弟去搞事情吧 public void setState(int state){ this.state = state; notifyAllObserver(); } //每一天都有要新加入的小弟 public void attach(Observer observer){ this.observer.add(observer); } //有公告要通知每个小弟 public void notifyAllObserver(){ for(Observer observer : this.observer){ observer.update(); } } }
step 2:观察者(Object),我一般喜欢称呼他为小弟模板(要加入我们必须要守规矩)
public abstract class Observer { //心中要有老大 protected Subject subject; //接受老大的提示,执行行动 abstract void update(); }
step 3 :下面就是各种小弟啦,哈哈
public class FirstObserver extends Observer{ public FirstObserver(Subject subject){ this.subject = subject; this.subject.attach(this); } @Override void update() { System.out.println("current state is"+this.subject.getState()+19); } }
public class SecondObserver extends Observer{ public SecondObserver(Subject subject){ this.subject = subject; this.subject.attach(this); } @Override void update() { System.out.println("current state is"+this.subject.getState()+19); } }
step 4:大哥说要干活了
public class testObserver { public static void main(String[] args) { Subject subject = new Subject(); FirstObserver f = new FirstObserver(subject); SecondObserver s =new SecondObserver(subject); f.update(); s.update(); subject.setState(39); } }结果:
current state is3919
current state is3919
current state is88919
current state is88919
好了,其实就是这样,具体的理解一定要结合开发的经验。
有不对地方的欢迎指教交流。
相关文章推荐
- 设计模式之观察者模式简单理解
- 设计模式(1)观察者模式简单理解
- 设计模式-观察者模式简单实例
- Java设计模式之观察者模式简单介绍
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- C#设计模式---观察者模式简单例子
- 浅谈观察者、工厂、简单工厂设计模式
- 用最简单的例子理解观察者模式(Observer Pattern)
- 大话设计模式总结(28种设计模式定义+简单理解)
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- 简单实例理解装饰者设计模式
- 简单理解常用设计模式(七)模板方法模式
- 简单理解设计模式之工厂模式
- 我所理解的设计模式(C++实现)——观察者模式(Observer Pattern)
- 极速理解设计模式系列:2.观察者模式(Observer Pattern)
- 设计模式-观察者模式自我理解
- Python设计模式之观察者模式简单示例
- 深入理解JavaScript系列(32):设计模式之观察者模式
- 设计模式 篇 单子模式 门面模式 适配器 工厂模式 观察者模式 命令者模式 装饰者模式 代理模式 简单讲解
- [设计模式] 几种设计模式的简单理解