定义基础规则抽象类
/**
* 通用规则抽象类
*/
public abstract class GeneralRule {
/**
* 通用规则抽象方法
*/
public abstract void process();
}
定义具体规则类
1.Aa规则(继承基础规则抽象类)
public class AaRule extends GeneralRule {
//重写抽象方法
@Override
public void process() {
System.out.println("A规则!");
}
}
2.Bb规则(继承基础规则抽象类)
public class BbRule extends GeneralRule {
//重写抽象方法
@Override
public void process() {
System.out.println("B规则");
}
}
定义枚举类
public enum RuleEnum {
//Aa规则
AA("AA",new AaRule()),
//Bb规则
BB("BB",new BbRule()),
;
public String name;
public GeneralRule rule;
private RuleEnum(String name,GeneralRule rule) {
this.name = name;
this.rule= rule;
}
//匹配方法
public static RuleEnum match(String name) {
RuleEnum[] values = RuleEnum.values();
for (RuleEnum ruleEnum : values) {
if(ruleEnum.name.equals(name)) {
return ruleEnum;
}
}
return null;
}
public String getName() {
return name;
}
public GeneralRule getRule() {
return rule;
}
}
使用规则对数据进行处理
public class Main {
public static void main(String[] args) {
String name = "BB";
RuleEnum ruleEnum = RuleEnum.match(name);
GeneralRule rule = ruleEnum .channelRule;
rule.process();
}
}
解析
通过使用枚举类,在枚举中将 key 与 规则具体实现进行绑定。在使用规则对数据进行处理时可以减少if - else判断使得代码更加优雅。新增规则也变得非常简单,只需要在枚举类中添加新的枚举即可,减少代码修改量。