设计模式之观察者模式

Posted wjinhhua

tags:

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

定义

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有有依赖于它的对象都得到通知并被自动更新。

实例

气象员A(ObserverA)、气象员B(ObserverB)观察天气(被观察者PObserver),天气发生变化,发出通知,并更新天气信息。

代码

客户端

public class Client 
    public static void main(String[] args) 

        PObserver pObserver = new PObserver();
        pObserver.addObserver(new ObserverA());
        pObserver.addObserver(new ObserverB());
        pObserver.changeData("气温急剧下降"); 
    

PObserver

public class PObserver extends Observable 
    private String data;
    public void changeData(String data)
        this.data = data;
        setChanged();
        this.notifyObservers();
    

    public String getData() 
        return this.data;
    

ObserverA

public class ObserverA implements Observer

    @Override
    public void update(Observable o, Object arg)   
        PObserver pObserver = (PObserver) o;
        System.out.println("ObserverA has watched data  "+ pObserver.getData());
    

ObserverB

public class ObserverB implements Observer

    @Override
    public void update(Observable o, Object arg)   
        PObserver pObserver = (PObserver) o;
        System.out.println("ObserverB has watched data  "+ pObserver.getData());
    

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

设计思想与模式之五观察者模式

PHP设计模式之----观察者模式

Head First设计模式之观察者模式

设计模式之观察者模式

设计模式系列之四:观察者模式

深入 Laravel 内核之观察者模式