设为首页 加入收藏

TOP

ResponsibleChain(责任链模式)
2017-10-13 10:40:04 】 浏览:7305
Tags:ResponsibleChain 责任 模式
/**
 * 责任链模式
 * @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("反正没人了随便写!!!");
        }
    }
    
}

 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇简单工厂模式 下一篇值得注意的ibatis动态sql语法格式

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目