观察者模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了观察者模式相关的知识,希望对你有一定的参考价值。

观察者模式:一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。

观察者

(Observer)将自己注册到被观察对象(Subject)中,被观察对象将观察者存放在一个容器(List)里。

被观察者

被观察对象(Subject)发生了某种变化,从容器中得到所有注册过的观察者,将变化通知观察者。

 

技术分享

代码实例

//被观察者接口
public interface Subject {
    
    void add(Observer observer);
    
    void remove(Observer observer);
    
    void notifyObserver();
}

//具体被观察者类
public class ConcreteSubject implements Subject{
    
    private List<Observer> list = new ArrayList<>();

    @Override
    public void add(Observer observer) {
        
        list.add(observer);
    }

    @Override
    public void remove(Observer observer) {
        list.remove(observer);
        
    }

    @Override
    public void notifyObserver() {
        
        for (Observer observer : list) {
            
            observer.update();
        }
    }
}

//观察者接口
public interface Observer {
    
    void update();
}

//具体观察者类1
public class ConcreteObserver1 implements Observer {

    @Override
    public void update() {
        
        System.out.println("观察者1已更新!");
        System.out.println("--------------------");
    }
}

//具体观察者类2
public class ConcreteObserver2 implements Observer {

    @Override
    public void update() {
        
        System.out.println("观察者2已更新!");
        System.out.println("--------------------");
    }
}

//测试类
public class Test {
    
    public static void main(String[] args) {
        
        Subject subject = new ConcreteSubject();
        Observer ob1 = new ConcreteObserver1();
        Observer ob2 = new ConcreteObserver2();
        subject.add(ob1);
        subject.add(ob2);
        subject.notifyObserver();
    }
}

输出结果:
观察者1已更新!
--------------------
观察者2已更新!
--------------------

以上是关于观察者模式的主要内容,如果未能解决你的问题,请参考以下文章

观察者模式是啥

观察者模式

设计模式之观察者模式

Android开发模式之观察者模式

[设计模式]观察者模式与订阅模式

设计模式-行为型模式-观察者模式