ResponsibleChain(责任链模式)

本文通过一个生动的例子介绍了责任链模式的应用。从老板分配任务到CTO开始,经过一系列角色最终到达执行者,展示了责任链模式如何使项目更灵活。每个处理者都可以选择将任务传递给下一个处理者或者自己处理。
/**
 * 责任链模式
 * @author TMAC-J
 * 老板讲任务交给CTO,CTO自然不会亲自去做,又把人物分配给项目经理,项目经理再把任务分配给组长,组长再分配给个人
 * 如果中途哪个环节出现了问题,比如项目经理请假了,组长直接接上,使得项目更加灵活
 */
public class ResponsibleChain {
    
    abstract class Handler{
        
        abstract void setNextHandler(Handler nextHandler);
        
        abstract Handler getNextHandler();
        
        abstract void doHandler(String str);
        
    }
    
    public class CTOHanlder extends Handler{

        private Handler nextHandler;
        
        @Override
        void setNextHandler(Handler nextHandler) {
            this.nextHandler = nextHandler;
            
        }

        @Override
        Handler getNextHandler() {
            return nextHandler;
        }

        @Override
        void doHandler(String str) {
            //其实这部分可以用模块模式分出来,但是这样会增加复杂度,所以此处不用
            if("人手足够".equals(str)){
                nextHandler.doHandler(str);
            }
            else{
                System.out.println("我自己处理..");
            }
        }
        
        
        
    } 
    
    public class ManageHanlder extends Handler{

        private Handler nextHandler;
        
        @Override
        void setNextHandler(Handler nextHandler) {
            this.nextHandler = nextHandler;
        }

        @Override
        Handler getNextHandler() {
            return nextHandler;
        }

        @Override
        void doHandler(String str) {
            //其实这部分可以用模块模式分出来,但是这样会增加复杂度,所以此处不用
            if("人手足够".equals(str)){
                nextHandler.doHandler(str);
            }
            else{
                System.out.println("我自己处理..");
            }
        }
        
    }
    
    public class WorkerHandler extends Handler{

        private Handler nextHandler;
        
        @Override
        void setNextHandler(Handler nextHandler) {
            this.nextHandler = nextHandler;
        }

        @Override
        Handler getNextHandler() {
            return nextHandler;
        }

        @Override
        void doHandler(String str) {
            System.out.println("手下没人了,我自己干吧...总有一天我也要当CTO!!!");
        }
        
    }
    
    public class Boss{
        public void dispatchMission(){
            Handler ctoHandler = new CTOHanlder();
            Handler managerHandler = new ManageHanlder();
            Handler workerHandler = new WorkerHandler();
            ctoHandler.setNextHandler(managerHandler);
            ctoHandler.doHandler("人手足够");
            managerHandler.setNextHandler(workerHandler);
            managerHandler.doHandler("人手足够");
            workerHandler.doHandler("反正没人了随便写!!!");
        }
    }
    
}

 

转载于:https://www.cnblogs.com/yzjT-mac/p/6232898.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值