首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

设计模式之责任链模式

设计模式之责任链模式

作为一个产品正在喝茶聊天,突然一个业务来电,小王啊,我们想做个“操作系统”,小王一听还想做操作系统,现在OA系统都没有做好呢,怎么不做个火箭呢,瞬间一亿个xxx飘过。寒暄几句,自己决定不了,上报了直属领导小张。小张一听这么大的事情,自己也决定不了,他又上报了自己的领导孙部长。孙部长一看来大活了,拍板定了。一个未来的操作系统“孙豆思"就这么定下来了。

上面就是一个责任链模式,我们来看看定义:

责任链模式:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系,将这些对象连成一条链,并沿着这条链传递该请求,知道有对象处理它为止。

通用的类图如下:

通用的类图

责任链模式涉及到的角色如下所示:

1、抽象处理者(Handler)角色:定义出一个处理请求的接口。这个角色通常由一个Java抽象类或者Java接口实现。上图中Handler类的聚合关系给出了具体子类对下家的引用,抽象方法handleRequest()规范了子类处理请求的操作。

2、具体处理者(ConcreteHandler)角色:具体处理者接到请求后,可以选择将请求处理掉,或者将请求传给下家。由于具体处理者持有对下家的引用。

通用的伪代码如下,仔细品一品,还是很有味道的,呵呵

责任链模式的通用代码

责任链模式的优缺点:

1、优点:请求和处理分开,两者解耦,提供系统的灵活性。

2、缺点:性能能问,一个链非常长的时候,非常耗时。因为我们避免建立很长的链。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200408A0UBUI00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券