• 设计模式讲解3:ChainOfResponsibility模式源码


    声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635

    责任链模式,和普通的函数逐层调用栈形成的逻辑链条不通,责任链会落实到某一个具体实施者完成该责任,而普通函数调用栈则是各个被调用函数环环相扣的。记住这点区别可以对责任链模式记忆清晰。
    举个例子,程序员应该编写有实际价值的代码,程序员知识一个有用的程序产生的过程链条上的一环。从市场人员接订单、架构师设计系统、程序员编码、测试人员测试,这就是一个典型的责任链。
    责任链接口

    package com.designpattern.chainofresponsibility;
    
    public interface Chain  {
        void addChain(Chain c);
        void sendToNextChain(String mesg);
    }
    

    市场人员,负责从市场接订单

    package com.designpattern.chainofresponsibility;
    
    /**
     * 市场人员,获得订到
     */
    public class Marketer implements Chain {
        private Chain nextChain = null;
        private String responsibility = "Get A Order";
    
        public void addChain(Chain c) {
            nextChain = c;
        }
    
        public void sendToNextChain(String msg) {
            if(msg.equals(responsibility)) {
                System.out.println("A Marketer:Get A Order");
            } else {
                if(nextChain != null) {
                    nextChain.sendToNextChain(msg);
                }
            }
        }
    }
    

    架构师,负责设计系统

    package com.designpattern.chainofresponsibility;
    
    /**
     * 架构师,设计系统
     */
    public class Architect implements Chain {
        private Chain nextChain = null;
        private String responsibility = "Design";
    
        public void addChain(Chain c) {
            nextChain = c;
        }
        
        public void sendToNextChain(String msg) {
            if(msg.equals(responsibility)) {
                System.out.println("A Architect: Design");
            } else {
                if(nextChain != null) {
                    nextChain.sendToNextChain(msg);
                }
            }
        }
    }
    

    程序员,负责程序开发

        package com.designpattern.chainofresponsibility;
        
        /**
         * 程序员,编码
         */
        public class Programmer implements Chain {
            private Chain nextChain = null;
            private String responsibility = "Coding";
        
            public void addChain(Chain c) {
                nextChain = c;
            }
        
            public void sendToNextChain(String msg) {
                if(msg.equals(responsibility)) {
                    System.out.println("A Programmer: Coding");
                } else {
                    if(nextChain != null) {
                        nextChain.sendToNextChain(msg);
                    }
                }
            }
        }
    

    测试人员,负责测试开发出的系统

    package com.designpattern.chainofresponsibility;
    /**
     * 测试人员,测试程序及系统
     */
    public class Tester implements Chain {
        private Chain nextChain = null;
        private String responsibility = "Test";
    
        public void addChain(Chain c) {
            nextChain = c;
        }
    
        public void sendToNextChain(String msg) {
            if(msg.equals(responsibility)) {
                System.out.println("A Tester: Test");
            } else {
                if(nextChain != null) {
                    nextChain.sendToNextChain(msg);
                }
            }
        }
    }
    

    其他人,提供各种其他服务

    package com.designpattern.chainofresponsibility;
    
    /**
     * 其他人员,提供其他服务
     */
    public class Others implements Chain {
        private Chain nextChain = null;
        private String responsibility = "";
    
        public void addChain(Chain c) {
            nextChain = c;
        }
    
        public void sendToNextChain(String msg) {
            System.out.println("supply service:" + msg);
        }
    }
    

    程序运行结果如下。

    A Marketer:Get A Order
    A Architect: Design
    A Programmer: Coding
    A Tester: Test
    supply service:Other Service
    
  • 相关阅读:
    2019-2020-1学期20192409《网络空间安全专业导论》第十二周学习总结
    2019-2020-1学期20192409《网络空间安全专业导论》第十一周学习总结
    2019-2020-1学期2012409《网络空间安全专业导论》第十周学习总结
    2019-2020-1学期20192409《网络空间安全专业导论》第九周学习总结
    2019-2020-1学期20192409《网络空间安全专业导论》第八周学习总结
    第十二十三十四章脑图
    2019-2020-1学期20192409《网络空间安全专业导论》第七周学习总结
    2019-2020-1学期《网络空间安全专业导论》第六周学习总结
    2019-2020-1学期20192409《网络空间安全专业导论》第五周学习总结
    第八九章脑图
  • 原文地址:https://www.cnblogs.com/xsl-thumb-rfcs/p/9941592.html
Copyright © 2020-2023  润新知