责任链模式(Chain of Responsibility)

本文通过UML类图介绍了责任链模式,并提供了使用C#与Python两种语言实现的具体代码示例。责任链模式允许请求沿着处理者链传递,直到有一个处理者决定处理此请求。

UML类图

代码实现

    public abstract class Component
    {
        protected Component handler;
        public void SetHandler(Component handler)
        {
            this.handler = handler;
        }

        public abstract void Execute(int i);
    }

    public class ComponentA : Component
    {
        public override void Execute(int i)
        {
            if (i > 0)
                Console.WriteLine("i>0");
            else if (handler != null)
                handler.Execute(i);
        }
    }

    public class ComponentB : Component
    {
        public override void Execute(int i)
        {
            if (i <= 0)
                Console.WriteLine("i<=0");
            else if (handler != null)
                handler.Execute(i);
        }
    }

Python代码实现:

class Component(object):
    component=None
    def SetComponent(self, component):
        self.component=component
    def Operate(self):
        raise NotImplementedError("abstract class, you know?")

class ComponentA(Component):
    def Operate(self):
        print "this is componentA, it's running operate method now, shit!"
        if not self.component == None:
            self.component.Operate()

class ComponentB(Component):
    def Operate(self):
        print "aha, welcome to componentB, execute operate method now, fuck!"
        if not self.component == None:
            self.component.Operate()


if __name__ == "__main__":
    componentA1=ComponentA()
    componentB1=ComponentB()
    componentB2=ComponentB()
    componentA2=ComponentA()
    componentA1.SetComponent(componentB1)
    componentB1.SetComponent(componentB2)
    componentB2.SetComponent(componentA2)
    componentA1.Operate()
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值