目录
一、状态枚举
二、动态责任链
三、批量执行器
一、状态枚举
在项目中,经常需要使用一些状态的枚举(即枚举中存在一个code来表示状态码),在比较时颇为繁琐
@Getter
@AllArgsConstructor
public enum Deleted{
NO(0),
YES(1);
private final int code;
public static void main(String[] args) {
Integer tempCode = 1;
if(tempCode != null && Deleted.YES.getCode() == tempCode){
}
}
}
由于Java单继承原则(枚举已经继承了Enum类),这里利用jdk1.8接口的default来进行封装 ,可以看出状态枚举可以被抽象出来的getCode方法,于是定义接口CodeEnumDefinition
public interface CodeEnumDefinition{
int getCode();
default boolean is(Integer code){
return code != null && code == getCode();
}
}
枚举实现该接口
@Getter
@AllArgsConstructor
public enum Deleted implements CodeEnumDefinition{
NO(0),
YES(1);
private final int code;
public static void main(String[] args) {
Integer tempCode = 1;
//用接口的default方法直接比较
if(Deleted.YES.is(tempCode)){
}
}
}
二、动态责任链
在项目中,往往存在多个模型数据在一个业务中保存或查询,这种情况可以使用责任链设计模式。而有不同的业务也可能涉及这些模型,可能包含其中几个模型,可能全包含,这里采用动态责任链来封装一组模型操作;
三、批量执行器
在项目中,存在一个列表,执行操作时因为一些原因需要批量执行。我们需要list切割,然后执行,这里封装一个批量执行器,以应对这种需求;



