singe - yxbook/notes GitHub Wiki
一、责任链设计模式
1 含义
责任链模式是一条链,链上有多个节点,每个节点都有各自的责任。当有输入时,第一个责任节点看自己能否处理该输入,如果可以就处理。如果不能就交由下一个责任节点处理。依次类推,直到最后一个责任节点
3 基类例子
package com.iamlook.design.chain;
/**
* @program: notes
* @description: 责任链模式
* @author: Created by youxun
**/
public abstract class AbstractLogger {
/*
判断是否进入下一个节点参数
*/
protected int level;
/*
下一个责任点
*/
protected AbstractLogger nextLogger;
public void setNextLogger(AbstractLogger nextLogger) {
this.nextLogger = nextLogger;
}
public void logMessage(int level, String message){
if(this.level <= level){
/*
如果当前节点可以处理,直接处理
*/
excute(message);
}
/*
如果当前节点不能处理,并且有下个节点,交由下个节点处理
*/
if(null != nextLogger){
nextLogger.logMessage(level, message);
}
}
/*
执行业务逻辑代码
*/
abstract protected void excute(String message);
}
3 责任链模式妙用
用了拆分if 与 case代码块。使代码更高端
String input = "1";
if ("1".equals(input)) {
//TODO do something
} else if ("2".equals(input)) {
//TODO do something
} else if ("3".equals(input)) {
//TODO do something
}
String input = "1";
switch (input) {
case "1":
//TODO do something
break;
case "2":
//TODO do something
break;
case "3":
//TODO do something
break;
default:
//TODO do something
break;
}