java行为型设计模式——责任链模式

1、理解:所谓责任连模式就是所当事件发生的时候,有人对事件进行处理;
2、处理方式:可以是先给对A处理,然后再给B处理,再给C处理,ABC处理的结果可以有关系,也可以没有关系
3、转换为代码:
  • 首先将事件接收者都抽象出一个类,这个类的作用是①能够获得事件接收者②能够抽象事件实现方法③能够在接受事件之后去调用方法同时将事件传递给下一个事件接收者
  • 事件接收者在接收事件之后重写抽象类中的方法实现具体的对事件的处理

例题如下(来自:https://www.w3cschool.cn/java/java-chain-of-responsibility-pattern.html

//先抽象类:

public abstract class Logger {

    protected Logger nextLogger;//下属
   
   
    public void setNextLogger(Logger nextLogger) {
        this.nextLogger = nextLogger;
    }
   
   
    abstract protected void log(String message);
   
   
    public void logMessage(String message){
        log(message);
        if(nextLogger !=null){
            nextLogger.logMessage(message);
        }
    }
}

//再设计抽象类的子类:

    public class EMailLogger extends Logger{
       
        public EMailLogger() {
            // TODO Auto-generated constructor stub
        }

        @Override
        protected void log(String message) {
            System.out.println("EMail::Logger: " + message);
        }
    }
    public class FileLogger extends Logger{
       
        public FileLogger() {
            // TODO Auto-generated constructor stub
        }

        @Override
        protected void log(String message) {
            System.out.println("File::Logger: " + message);
        }
    }
    public class ConsoleLogger extends Logger{
       
        public ConsoleLogger() {
            // TODO Auto-generated constructor stub
        }

        @Override
        protected void log(String message) {
            System.out.println("Console::Logger: " + message);
        }
    }

//最后编写一个测试类查看效果:

public class Main {
   
   
    private static Logger getChainOfLoggers(){
        Logger emailLogger=new EMailLogger();
        Logger fileLogger=new FileLogger();
        Logger consoleLogger=new ConsoleLogger();
        emailLogger.setNextLogger(fileLogger);//设置对应下属
        fileLogger.setNextLogger(consoleLogger);//设置对应下属
        return emailLogger;
    }

   
    public static void main(String[] args) {
        Logger loggerChain=getChainOfLoggers();
        loggerChain.logMessage("第一个命令");
    }

}
总结:就是给你一个事件,你先处理事件,然后获取下一个处理事件的人,然后让这个人来处理事件,依次循环

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值