责任链模式(Chain of Responsibility Pattern):简单&粗暴解析

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):简单&粗暴解析


写技术文章初心

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

猜你喜欢

转载自blog.csdn.net/qwe851023/article/details/84316559