美文网首页
设计模式之观察者模式

设计模式之观察者模式

作者: smallstrong | 来源:发表于2017-05-10 16:35 被阅读35次

观察者模式

观察者模式UML.png
abstract class Subject{
    protected ArrayList<Observer> list = new ArrayList<>();
    void notift();
    void addObserver(Observer observer);
    void removeObserver(Observer observer);
}

抽象观察对象

class ConcreteSubject extends Subject{
    public void notify(){
        for(int i = 0;i < list.size();i++){
            list.get(i).update("坐骑:秋名山神车---五菱宏光");  
        }
    }
    
    public addObserver(Observer observer){
        list.add(observer);
    }
    
    public removeObserver(Observer observer){
        list.remove(observer);
    }
}

具体观察对象

interface Observer{
    void update(String str);
}

抽象观察者

class ConcreteObserver implements Observer{
    public void update(String str){
        System.out.println(str);
    }
}   

观察者

class Client{
    public static void main(String[] args){
        Subject mSubject = new ConcreteSubject();
        mSubject.add(new ConcreteObserver());
        mSubject.add(new ConcreteObserver());
        mSubject.add(new ConcreteObserver());
        mSubject.notify();
    }
}   

客户端

本例很简单的说明了观察者模式,被观察对象发生变化时通知订阅该对象的观察者们作出相应改变。在Java的API中就内涵了这些,平时写的接口回调也是类似。Android中事件总线,广播等等都用到这这种模式。

相关文章

网友评论

      本文标题:设计模式之观察者模式

      本文链接:https://www.haomeiwen.com/subject/jzsgtxtx.html