设计模式

观察者模式(Observer)

2020-07-22  本文已影响0人  秀儿2020

定义

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

本质

触发联动

登场角色

示例代码

/**
 * 观察者
 */
public class Coder implements Observer {
    String name;

    public Coder(String name) {
        this.name = name;
    }

    @Override
    public void update(Observable o, Object arg) {
        System.out.println("Hi, " + name + " DevTechFrontier更新了" + arg);
    }

    @Override
    public String toString() {
        return "Coder{" +
                "name='" + name + '\'' +
                '}';
    }
}



/**
 * 被观察者
 */
public class DevTechFronter extends Observable {
    public void postNewContent(String content){
        //标志内容发生改变
        setChanged();
        //通知所有观察者
        notifyObservers(content);
    }
}


public class Client {
    public static void main(String[] args){
        //被观察的角色
        DevTechFronter devTechFronter = new DevTechFronter();
        //观察者
        Coder coder1 = new Coder("Coder1");
        Coder coder2 = new Coder("Coder2");
        Coder coder3 = new Coder("Coder3");
        //将观察者注册到被观察者列表中
        devTechFronter.addObserver(coder1);
        devTechFronter.addObserver(coder2);
        devTechFronter.addObserver(coder3);
        //发布消息
        devTechFronter.postNewContent("this is the new content.");
    }
}

运行结果

Hi, Coder3 DevTechFrontier更新了this is the new content.
Hi, Coder2 DevTechFrontier更新了this is the new content.
Hi, Coder1 DevTechFrontier更新了this is the new content.

优点

缺点

使用场景

上一篇下一篇

猜你喜欢

热点阅读