Observer模式(觀察者模式)

被觀察對象內保存全部觀察者信息,被觀察對象更新時通知每個觀察者對象。
代碼如下:

//觀察者 接口
public interface Observer {
    public void update(Subject subject);
}
//觀察者實現類
public class MyObserverA implements Observer{

    @Override
    public void update(Subject subject) {
        System.out.println("a is updated");
    }

}
public class MyObserverB implements Observer{

    @Override
    public void update(Subject subject) {
        System.out.println("b is updated");
    }

}
//被觀察者
public class Subject {
    private static Vector obs = new Vector();
        //註冊觀察者
        public static void attach(Observer ob){
        obs.add(ob);
    }
    //解除與註冊者關聯
    public static void dettach(Observer ob){
        obs.remove(ob);
    }
    //操作
    public void operatio(){
        //執行操作
        //通知所有觀察者
        Enumeration elements = obs.elements();
        while(elements.hasMoreElements()){
        elements.nextElement().update(this);
        }
    }
}

//測試
public class Client {
    public static void main(String[] args) {
        Subject.attach(new MyObserverA());
        Subject.attach(new MyObserverB());
        Subject subject = new Subject();
        subject.operatio();

    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章