java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java观察者模式

Java设计模式探究之观察者模式详解

作者:niuyongzhi

这篇文章主要为大家详细介绍了JAVA的观察者模式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

1.观察者模式是什么

顾名思义,有两个对象,观察者和被观察者。当被观察者数据发生变化时,提醒观察者更新数据或状态。

2.如何实现

1)定义两个类,观察者和被观察者。

2)被观察者要维护一个集合,存放观察者对象。并且提供增删方法。

3)被观察者数据发生变化时,要调用观察者的方法,以便通知观察者更新数据或状态。

4)基于面向抽象原则,可以将观察者和被观察者中的方法提取接口中。

3.代码实现

1)观察者接口

/**
 * 抽象观察者接口
 */
public interface Observer {
    /**
     * 抽象方法
     */
    public void uPdate();
    public void remove();
}

2)被观察者接口

/**
 * 抽象被观察者
 */
public interface Observed {
    public void addObserver(Observer observer);
    public void deleteObserver(Observer observer);
    public void notifyObservers();
}

3)观察者实现

/**
 * 观察者实现
 */
public class ObserverImpl implements Observer {
    public ObserverImpl(){
    }
    @Override
    public void uPdate() {
        System.out.println("update....");
    }
}

4)被观察者实现

/**
 * 观察者实现
 */
public class ObserverImpl implements Observer {
    public ObserverImpl(){
    }
    private Observed observed;
    public ObserverImpl(Observed observed){
        this.observed = observed;
        observed.addObserver(this);
    }
    @Override
    public void uPdate() {
        System.out.println("观察者更新数据变化....");
    }
    @Override
    public void remove() {
        if(observed!=null){
            observed.deleteObserver(this);
        }
    }
}

5)测试类

public class TestObserver {
    public static void main(String args []){
        ObservedImpl subject = new ObservedImpl();
        ObserverImpl observer1 =  new ObserverImpl(subject);
        subject.notifyObservers();
    }
}

4.延伸拓展

在Android的代码中,有很多地方用到了观察者模式。

Android的广播机制,就是采用的观察者模式。

我们创建一个广播接收者,来接收系统广播。在Android源码中,其实就维护了一个接收者的集合,用于存放所有的广播接收者。

到此这篇关于Java设计模式探究之观察者模式详解的文章就介绍到这了,更多相关Java观察者模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文