美文网首页
责任链模式(Chain of Responsibility Pa

责任链模式(Chain of Responsibility Pa

作者: Linhaojian | 来源:发表于2018-11-21 11:29 被阅读31次

    1.前言


    2.目录

    模式目录.png

    3.含义

    将多个对象连成一条链,沿着这条链传递至每一个对象并处理请求。


    4.解决

    1.请求者与处理细节的解耦。


    5.原理

    定义一个处理者的抽象类,按需添对应的具体实现的子类,然后把所有子类的按执行顺序关联起来。

    5.1 责任链模式结构

    责任链结构1.png

    5.2 结构分析

    Chain:定义处理请求的方法 & 提供设置关联类的方法。
    AChain:处理请求的具体实现。
    BChain:处理请求的具体实现。
    CChain:处理请求的具体实现。

    5.3 实例(日志显示、缓存、记录)

    Logger

    public abstract class Logger {
        protected Logger logger;
        public void nextLogger(Logger lg){
            logger = lg;
        }
        public abstract void wirte(String content);
    }
    

    ConsoleLogger

    public class ConsoleLogger extends Logger {
        @Override
        public void wirte(String content) {
            console(content);
            if(logger!=null){
                logger.wirte(content);
            }
        }
        private void console(String content){
            System.out.println(content+" Show In Concole");
        }
    }
    

    FileLogger

    public class FileLogger extends Logger {
        @Override
        public void wirte(String content) {
            saveLocalFile(content);
            if(logger!=null){
                logger.wirte(content);
            }
        }
        private void saveLocalFile(String content){
            System.out.println(content+" Save In Localfile");
        }
    }
    

    ServerLogger

    public class ServerLogger extends Logger {
        @Override
        public void wirte(String content) {
            saveServer(content);
            if(logger!=null){
                logger.wirte(content);
            }
        }
        private void saveServer(String content){
            System.out.println(content+" Save In Server");
        }
    }
    

    Context

    public class Context {
        private Logger consoleL,fileL,serverL;
        public Context(){
            consoleL = new ConsoleLogger();
            fileL = new FileLogger();
            serverL = new ServerLogger();
            consoleL.nextLogger(fileL);
            fileL.nextLogger(serverL);
        }
        public void log(String content){
            consoleL.wirte(content);
        }
    }
    

    6.优点

    1.降低耦合,把请求者与处理细节分离,便于扩展。
    2.简化对象,使对象责任更清晰,便于维护。
    3.增加对象指派职责的灵活性。


    7.缺点

    1. 当处理对象过多时,会影响执行性能。

    8.总结

    • 到此, 责任链模式 就解析完毕,后续我会把上述 三大类型模式 下的各子模式进行解析分享,
      请继续关注linhaojian_简书
    • 如果喜欢我的分享,可以点击 关注 或者 ,你们支持是我分享的最大动力 。
    • linhaojian的Github

    欢迎关注linhaojian_CSDN博客或者linhaojian_简书

    不定期分享关于安卓开发的干货。

    设计模式(Design pattern):简单&粗暴解析
    单例模式(Singleton Pattern):简单&粗暴解析
    简单工厂模式(Easy Factory Pattern):简单&粗暴解析
    工厂模式(Factory Pattern):简单&粗暴解析):简单&粗暴解析
    抽象工厂模式(Abstract Factory Pattern):简单&粗暴解析
    建造者模式(Builder Pattern):简单&粗暴解析
    代理模式(Proxy Pattern):简单&粗暴解析
    装饰器模式(Decorator Pattern):简单&粗暴解析
    外观模式(Facade Pattern):简单&粗暴解析
    享元模式(Flyweight Pattern):简单&粗暴解析
    观察者模式(Observe Pattern):简单&粗暴解析
    策略模式(Strategy attern):简单&粗暴解析


    写技术文章初心

    • 技术知识积累
    • 技术知识巩固
    • 技术知识分享
    • 技术知识交流

    相关文章

      网友评论

          本文标题:责任链模式(Chain of Responsibility Pa

          本文链接:https://www.haomeiwen.com/subject/hejqqqtx.html