观察者模式

  • Subject 被观察者

    • Collection 观察者集合
    • Attach 和 Detach 动态地增加、取消观察者
    • Notify 遍历集合通知观察者
  • ConcreteSubject
    定义被观察者逻辑,和那些事件进行通知

  • Observer 观察者

    • update 更新
  • ConcreteObserver
    定义更新逻辑

subject = new ConcreteSubject();
observer = new ConcreteObserver();
subject.add(observer);

总结

优点

  • 观察者和被观察者之间是抽象(接口或抽象类)耦合
  • java提供了Observable实现类和Observer接口

缺点

  • 消息遍历通知如果采用同步方法,一旦一个观察者阻塞会影响整体效率,一般考虑采用异步方式,比如消息队列、多线程;同步架构的话可以考虑缓存技术快速响应。
  • 避免在一条链路上出现多个转发角色(同时作为观察者和被观察者),责任链是消息在传输过程中基本保持透传,观察者模式可会对原消息加工。
  • 尽量由被观察者subject决定是否要通知,而不是让观察者决定是否要消费通知。

你可能感兴趣的:(观察者模式)