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("反正没人了随便写!!!");
            }
        }
        
    }
  • 相关阅读:
    [UWP]使用CompositionLinearGradientBrush实现渐变画笔并制作动画
    [WPF 自定义控件]模仿UWP的ProgressRing
    [UWP]占领标题栏
    [WPF 自定义控件]关于ScrollViewer和滚动轮劫持(scroll-wheel-hijack)
    [WPF 自定义控件]给WPF一个HyperlinkButton
    VisualStudio中的单元测试
    重温《单元测试的艺术》,总结常用知识点
    [WPF 自定义控件]自定义Expander
    nhibernate入门使用经验
    个人搜藏小技巧:eclipse 设定proxy,仍不能连网的问题
  • 原文地址:https://www.cnblogs.com/yzjT-mac/p/6232898.html
Copyright © 2011-2022 走看看