亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

觀察者模式學習--使用jdk的工具類簡單實現

標簽:
Android

观察者模式学习之二:使用jdk的自带的工具类实现,与自己实现相比,两者有以下的区别:

1,自己实现,需要定义观察者的接口类和目标对象的接口类。使用java util的工具类,则不需要自己定义观察者和目标对象的接口类了,jdk已经定义好了。

2,自己实现,具体的目标对象类中,实现了接口方法后,还必须要自己实现维护观察者的注册删除信息。但是使用jdk,则不需要了,在

jdk的util下的observable类里面已经帮忙维护好了。

3,目标对象触发观察者的update的通知方式有了变化,自己的实现,只要定义好触发方法,调用观察者的接口的update方法就好了。使用jdk则必须要先先调用setChange()方法,否则,不会触发通知,通知观察者变化。这是java为了帮助实现更加精准的触发控制而提供的功能方法。

4,具体的观察者类的实现中,update方法有区别,自己实现的,需要按照自己的需要定义好是按照推模式,还是拉模式,定义update的方法参数。但是 使用jdk,则update的方法中包含了传送的参数和目标对象的引用。能够同时满足推模式和拉模式的实现

实例如下:

package zhgapp.ztd.com.rx_java.Rx_java2;

import java.util.Observable;
import java.util.Observer;

/**
 * 观察者类
 * Created by Administrator on 2016-12-27.
 */
public class SimpleObserver implements Observer{

    public SimpleObserver(SimpleObsevable obsevable){
        obsevable.addObserver(this);
    }
    //当被观察者发生改变的时候会调用
    @Override
    public void update(Observable observable, Object o) {
            System.out.println("data in changed:"+((SimpleObsevable)observable).getData());
    }
}
package zhgapp.ztd.com.rx_java.Rx_java2;

import java.util.Observable;

/**创建一个被观察者
 * Created by Administrator on 2016-12-27.
 */
public class SimpleObsevable extends Observable{
    private int data=0;
    public int getData(){
        return data;
    }

    public void setData(int i){
        if(this.data!=i){
            this.data=i;
            setChanged();//发生变化
            notifyObservers();//告知观察者
        }
    }
}
package zhgapp.ztd.com.rx_java.Rx_java2;

/**
 * 测试类
 * Created by Administrator on 2016-12-27.
 */
public class Test {

    public static void main(String[] args){
        SimpleObsevable simpleObsevable=new SimpleObsevable();
        SimpleObserver observer=new SimpleObserver(simpleObsevable);

        simpleObsevable.setData(1);
        simpleObsevable.setData(2);
        simpleObsevable.setData(3);

    }

}

原文链接:http://www.apkbus.com/blog-813041-62856.html

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消