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