设计模式之观察者模式&责任链模式

设计模式之观察者模式&责任链模式Demo地址
https://github.com/rocky123shine/observer

观察者模式
定义

当一个对象的状态发生改变时,所有依赖于它的订阅者都会收到通知。

应用场景
    场景一:关联行为场景
    场景二:事件多级触发场景
    场景三:跨系统消息交互场景(例如:消息队列、事件总线)
           Android开发:RxJava、Eventbus等等…
角色

角色一:被观察者->Observable(目标对象)
角色二:具体被观察者
角色三:观察者->Observer
角色四:具体观察者

观察者模式设计及实现
1.被观察者设计 observable 使用泛型传入数据 且提供三个方法和持有观察者引用,维护观察者
2.具体观察者 提供更新数据的方法
3.单例模式 提供被观察者对象实例
说明:这里没有严格按角色设计,而是使用单例模式,目的是方便观察者的注册与反注册
责任链模式
定义

责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。

应用场景

多个对象可以处理同一请求,但是由哪个对象处理则在运行时动态决定

角色
角色一:Handler(抽象处理角色)
角色二:ConcreteHandler(具体处理角色)
角色三:Request(抽象请求角色)
角色四:ConcrateRequest(具体请求对象)
设计与实现
  1. 抽象处理角色设计——持有下一个处理请求的对象,提供处理事件的方法
  2. 具体角色设计 ——–继承抽象角色类,重写方法
  3. 抽象请求设计——–提供请求能容的方法
  4. 具体请求设计———继承或实现抽象请求

说明,GitHub 上Demo 表面上没有Request 这个类,或者说表面上没有抽象请求和具体请求,其实 这个“请求”就是handler处理消息的一个参数,这里我直接使用了字符串做参数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值