zoukankan      html  css  js  c++  java
  • 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("反正没人了随便写!!!");
            }
        }
        
    }
  • 相关阅读:
    Linux Shell系列教程之(十七) Shell文件包含
    Linux Shell系列教程之(十六) Shell输入输出重定向
    Linux Shell系列教程之(十五) Shell函数简介
    Linux Shell系列教程之(十四) Shell Select教程
    Linux Shell系列教程之(十三)Shell分支语句case … esac教程
    Linux Shell系列教程之(十二)Shell until循环
    Linux Shell系列教程
    算法系列:链表
    C++ 系列:Boost Thread 编程指南
    C++:多线程002
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/6232898.html
Copyright © 2011-2022 走看看