Java设计模式之责任链模式(ChainOfResponsibility)实践

       责任链模式定义:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。
       有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定。此时可以使用责任链模式。

以下代码演示责任链模式简单的实际运用:

定义一个抽象类Worker:

package com.ldl.cn.ChainOfResponsibilityModel;

public abstract class Worker {

    private Worker nextWorker;

    public Worker getNextWorker() {
        return nextWorker;
    }

    public void setNextWorker(Worker nextWorker) {
        this.nextWorker = nextWorker;
    }
    
    public abstract void doSomething(String content);
}

分别定义Worker1、Worker2继承Worker:

package com.ldl.cn.ChainOfResponsibilityModel;

public class Worker1 extends Worker{

    @Override
    public void doSomething(String content) {
        if (content.contains("job1")) {
            System.out.println("Worker1 handles job1");
        }else {
            if (getNextWorker() != null) {
                getNextWorker().doSomething(content);
            }else {
                System.out.println("Nobody handles "+content);
            }
        }
    }

}
package com.ldl.cn.ChainOfResponsibilityModel;

public class Worker2 extends Worker{

    @Override
    public void doSomething(String content) {
        if (content.contains("job2")) {
            System.out.println("Worker2 handles job2");
        }else {
            if (getNextWorker() != null) {
                getNextWorker().doSomething(content);
            }else {
                System.out.println("Nobody handles "+content);
            }
        }
    }

}

编写测试类:

package com.ldl.cn.ChainOfResponsibilityModel;

public class TestChainOfResponsibilityPattern {

    public static void main(String[] args) {
        
        Worker worker1 = new Worker1();
        Worker worker2 = new Worker2();
        
        worker1.setNextWorker(worker2);
        worker1.doSomething("job1");
        worker1.doSomething("job2");
        worker1.doSomething("job3");
    }
}

运行结果:
Worker1 handles job1
Worker2 handles job2
Nobody handles job3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值