设计模式_职责模式


职责模式也称为责任链模式,它将请求的发生在和接受者解耦.客户端不需要知道请求处理者的明确信息和处理的具体逻辑,甚至不需要知道链的结构,它只需要将请求进行发送即可.

场景:  员工->请假--> A领导-->B领导-->C负责人
 

在设计职责模式的时候,需要注意的点:

  1. 请求者和请求内容: 确认谁要发送请求,发送请求的对象成为请求者,请求的内容通过发送请求时的参数进行传递.
  2. 有哪些责任人: 责任人是构成责任链的关键要素.请求的流动方向是链条中的线.而责任人这是链条上的点,线和点共同构成一条链条.
  3. 对责任人进行抽象: 对责任人进行抽象,使得他们的责任可传递性.
  4. 责任人可以自由组合:责任链上的责任人可以根据业务的具体逻辑进行自由的组合和排序.

优点:

  • 降低耦合度
  • 简化了对象
  • 增强给对象指派职责的灵活性
  • 增加新的处理类很方便

缺点:

  • 不能保证请求一定被接收
  • 系统的性能会受到一定影响.

应用场景

  • 有多个对象可以处理同一个请求,具体哪个对象处理该请求在运行时自动确定
  • 请求的处理具体有明显的传递关系
  • 请求的处理流程和顺序需要程序运行时动态确定
  • 参加的审批流程.

Demo1


class Handle(object):
    def __init__(self):
        self.successor=""

    def setsuccessor(self,successor):
        self.successor=successor

    def handle_request(self,request):
        pass

class ConcreteHandle1(Handle):
    def handle_request(self,request):
        if request>0 and request<=10:
            print("ConcreteHandle1 处理请求:",request)
        else:
            self.successor.handle_request(request)

class ConcreteHandle2(Handle):
    def handle_request(self,request):
        if request>10 and request<=20:
            print("ConcreteHandle2 处理情况:",request)
        else:
            self.handle_request(request)

if __name__ == '__main__':
    c1=ConcreteHandle1()
    c2=ConcreteHandle2()
    c1.setsuccessor(c2)

    for i in range(5,17):
        c1.handle_request(i)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白日与明月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值