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

设计模式之观察者模式

作者: 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