设计模式-责任链模式(responsibility)

本文深入讲解了责任链模式,一种行为设计模式,通过构建一系列处理对象来共同完成任务。介绍了其核心概念,如抽象处理者和具体处理者,并提供了具体的代码实现。探讨了该模式的优缺点及应用场景。

责任链模式是行为模式的一种,该模式构造一系列的分别担当不同职责的类的对象(HeaderCar、BodyCar、FooterCar)来共同完成一个任务,这些类的对象之间像链条一样紧密相连。

角色和职责:

1.抽象处理者(Handler)-CarHandler:

 

2.具体处理者(Concrete Handler) -:

 

UML图:

 

具体代码:

/**
 * 汽车类
 */
public abstract class CarHandler {
    protected CarHandler carHandler;

    public  CarHandler setChaimHandler(CarHandler carHandler){
        this.carHandler = carHandler;
        return carHandler;
    }
    public abstract void task();
}
/**
 * 安装车头
 */
public class HeaderHandler extends CarHandler{
    @Override
    public void task() {
        System.out.println("安装车头!");
        if(carHandler != null){
            carHandler.task();
        }
    }
}
/**
 * 安装车身
 */
public class BodyHandler extends CarHandler{
    @Override
    public void task() {
        System.out.println("安装车身");
        if(carHandler != null){
            carHandler.task();
        }
    }
}
/**
 * 安装车尾
 */
public class FooterHandler extends CarHandler{
    @Override
    public void task() {
        System.out.println("安装车尾");
        if(carHandler != null){
            carHandler.task();
        }
    }
}
public class Main {
    public static void main(String[] args) {
        CarHandler headerHandler = new HeaderHandler();//车头
        CarHandler bodyHandler = new BodyHandler();//车身
        CarHandler footerHandler = new FooterHandler();//车尾

        headerHandler.setChaimHandler(bodyHandler).setChaimHandler(footerHandler);
        headerHandler.task();//拼装车
    }
}

结果:

安装车头!
安装车身
安装车尾

 

 

优缺点:

优:1.责任的分担,每个类只需要处理自己该处理的工作,明确各类的责任范围,符合类的最小封装原则;

       2.可以根据需要自由组合工作流程。

       3.类和类之间松耦合

缺:因为处理时以链的形式在对象间传递消息,根据实现方式不同,可能影响处理速度

 

应用场景:

1.比如客户要完成一个任务,任务包括a,b,c,d四个部分。首先把任务交给a,a完成后交给b,b完成后交给c,c完成交给d

2.政府某项工作,县政府完成自己能处理的部分,不能处理的交给市政府。市政府处理自己能处理的部分,不能处理的交给省政府。

3.软件窗口的消息传递

4.过滤器filter的实现。

 

源码地址:https://github.com/qjm201000/design_pattern_responsibility.git

转载于:https://www.cnblogs.com/qjm201000/p/10100601.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值