美文网首页
观察者模式(Observer)

观察者模式(Observer)

作者: 森码 | 来源:发表于2018-08-05 16:27 被阅读8次
    1. 定义
      定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。

    2. 类图


      Obeserver
    3. 例子

    interface Observer {
        public void update();
    }
    class ConcreteObserver1 implements Observer {
        public void update() {
            System.out.println("观察者1收到信息,并进行处理。");
        }
    }
    class ConcreteObserver2 implements Observer {
        public void update() {
            System.out.println("观察者2收到信息,并进行处理。");
        }
    }
     
    abstract class Subject {
        private List<Observer> obs = new ArrayList<Observer>();
        
        public void addObserver(Observer obs){
            this.obs.add(obs);
        }
        public void delObserver(Observer obs){
            this.obs.remove(obs);
        }
        protected void notifyObserver(){
            for(Observer o: obs){
                o.update();
            }
        }
        public abstract void notify();
    }
     
    class ConcreteSubject extends Subject {
        public void notify(){
            System.out.println("被观察者事件发生");
            this.notifyObserver();
        }
    }
    
    public class Client {
        public static void main(String[] args){
            Subject sub = new ConcreteSubject();
            sub.addObserver(new ConcreteObserver1()); //添加观察者1
            sub.addObserver(new ConcreteObserver2()); //添加观察者2
            sub.notify();
        }
    }
    

    补充

    • 观察者以其响应式编程的特点受到了越来越多的青睐,特别是前端,各种变体层出不穷MVVM,EventBus等等,这样的代码不仅降低了各个部分之间的耦合,而且也让开发变得更加舒适,但是要有一个良好的架构和设计,否则可读性会变的比较差。

    相关文章

      网友评论

          本文标题:观察者模式(Observer)

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