观察者模式

Posted

tags:

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

观察者模式

定义:定义了对象之间的一对多依赖,当主对象改变状态时,它的所有依赖者都会收到通知并自动更新

类型:行为型

类结构图

技术分享

 

实现代码

 

public class Subject {
    
    private int data;
    
    private boolean isChange;

    private Set<Observer> observers=new HashSet<Observer>();
    
    public void register(Observer obj){
        observers.add(obj);
    }
    
    public void remove(Observer obj){
        observers.remove(obj);
    }
    
    public  void notifyAlls(){
        if(isChange){
            for(Observer ob:observers){
                ob.call(data);
            }
            isChange=false;
        }
    }
    
    public  void setData(int data){
        if(data!=this.data)isChange=true;
        this.data=data;
    }
}

public interface Observer {
    public abstract void call(int data);
}

public class Jack implements Observer{

    @Override
    public void call(int data) {
        System.out.println("Jack:"+data);
        
    }

}

public class Rusy implements Observer{

    @Override
    public void call(int data) {
        System.out.println("Rusy:"+data);
    }

}

 松耦合的威力

  当两个对象之间松耦合,它们依然可以交互,但是不太清楚彼此的细节。观察者模式提供了一种对象设计、让主题和观察者之间松耦合。松耦合让我们可以建立更有弹性和灵活的系统。

 

 

 

 

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

未调用 LiveData 观察者

Java设计模式补充:回调模式事件监听器模式观察者模式(转)

如何为片段设置观察者

永远观察实时数据的片段

设计模式观察者模式 ( 简介 | 适用场景 | 优缺点 | 代码示例 )

观察者模式