观察者模式

  • Subject 被观察者

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

  • Observer 观察者

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

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

总结

优点

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

缺点

  • 消息遍历通知如果采用同步方法,一旦一个观察者阻塞会影响整体效率,一般考虑采用异步方式,比如消息队列、多线程;同步架构的话可以考虑缓存技术快速响应。
  • 避免在一条链路上出现多个转发角色(同时作为观察者和被观察者),责任链是消息在传输过程中基本保持透传,观察者模式可会对原消息加工。
  • 尽量由被观察者subject决定是否要通知,而不是让观察者决定是否要消费通知。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容