设计模式——观察者模式

Posted boycelee

tags:

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

- 什么是观察者模式

观察者模式有叫做发布订阅模式,是对象间一种一对多的依赖关系,是的每当一个对象改变状态时,则所有依赖于他的对象都会得到通知并自动更新。这其中过程就好比订阅微信公众号,公众号中若有新消息产生就会及时通知用户并更新。

技术分享图片

  • 抽象观察者

    public interface Observer {
    public void update(String message);
    }
  • 具体观察者(ConcrereObserver)

    public class WeixinUser implements Observer {
    // 微信用户名
    private String name;
    public WeixinUser(String name) {
        this.name = name;
    }
    @Override
    public void update(String message) {
        System.out.println(name + "-" + message);
    }
    }
  • 抽象被观察者(Subject)

    public interface Subject {
    /**
     * 增加订阅者
     * @param observer
     */
    public void attach(Observer observer);
    /**
     * 删除订阅者
     * @param observer
     */
    public void detach(Observer observer);
    /**
     * 通知订阅者更新消息
     */
    public void notify(String message);
    }
  • 具体被观察者(ConcreteSubject)

     public class SubscriptionSubject implements Subject {
    
    private List<Observer> weixinUserlist = new ArrayList<Observer>();
    
    @Override
    public void attach(Observer observer) {
        weixinUserlist.add(observer);
    }
    
    @Override
    public void detach(Observer observer) {
        weixinUserlist.remove(observer);
    }
    
    @Override
    public void notify(String message) {
        for (Observer observer : weixinUserlist) {
            observer.update(message);
        }
    }
    }

- 观察者模式优点与缺点

优点:
1.观察者与被观察者之间抽象耦合,易拓展
2.简历一套出发机制,单一职责

- 使用场景

1.时间多级触发(一对多)
2.信息交换跨系统场景(qmq)




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

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

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

观察者模式

未调用 LiveData 观察者

设计模式之美(c++)-笔记-56-观察者模式

设计模式之美(c++)-笔记-56-观察者模式