码迷,mamicode.com
首页 > 其他好文 > 详细

观察者模式

时间:2019-05-17 12:10:10      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:void   提醒   list   解释   添加   通过   system   protect   date()   

用对象的方式解释观察者模式。

定义一个事件: 2、西游记里面悟空请求菩萨降服红孩儿,菩萨洒了一地水招来一个老乌龟,这个乌龟就是观察者,他观察菩萨洒水这个动作。

解释:对象1观音菩萨,动作洒水,对象2观察者乌龟。代码中,会在观音菩萨中加一个字段,List<Observer> observers = new ArrayList<Observer>();   这个字段用来比作老乌龟的目光吧,观音的动作中

public void setI(int i) {    this.i = i;  notifyAllObservers();}    这个表示的意思是在动作setI执行中加入一个传播方法,比如说观音洒水,这个动作通过光传播给乌龟,乌龟就过去了,那么这里设置i比作观音洒水,提醒观察者就比作光传播,

private void notifyAllObservers() {
for (Observer o: observers) {
o.update();}}

观察者里面的方法就可以执行了,乌龟就来了=update实际执行的意思就是

@Override
protected void update() {
System.out.println("HexaObserver:"+Integer.toHexString(this.subject.getI()));}

new HexaObserver(subject);  这句话则是hexa乌龟要观察subject观音 的动作,在代码中啊。整个逻辑用汉文整理一下。

实例化观音,实例化乌龟的时候添加乌龟要观察的对象,也就是观音,观音的setI动作=观音洒水,洒水的动作中,植入notifyall,将观音的实例属性观察者observers全部遍历,执行乌龟飞向菩萨的动作=observer.update(),这就完成了观音洒水,乌龟飞过去这个观察者模式的代码逻辑解读。

稍后附上代码。

 

观察者模式

标签:void   提醒   list   解释   添加   通过   system   protect   date()   

原文地址:https://www.cnblogs.com/woainixxx/p/10880582.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!