背景:项目中很多业务需构建实体,此时可以用枚举来实现策略模式构建
目录
一、枚举设定
1:建议加入desc
2:设定返回的方法,每一个枚举都可以用此方法,用时方法使用final修饰,同时针对返回同一个实体,方法名可以一致,传入参数为object即可,可向下转为一切类型
二、代码参考
@Getter
@AllArgsConstructor
public enum EmSingleBuilder {
/*******************sop*****************/
SOP_IDLIST("根据Sop主键集合构建"){
public SopEntity buildSopEntity(Object obj) {
return SopConvert.INSTANCE.convertAoToEn(
new SopEntity().setIncludeIdList((List<String>) obj));
}
},
SOP_PRODUCTIDLIST("根据产品主键集合构建"){
public SopEntity buildSopEntity(Object obj) {
return SopConvert.INSTANCE.convertAoToEn(
new SopEntity().setProductIdList((List<String>) obj));
}
},
/*******************sopDetail*****************/
SOPDETAIL_SOPID("根据SOP主键构建"){
public SopDetailEntity buildSopDetailEntity(Object obj){
return SopDetailConvert.INSTANCE.convertAoToEn(
new SopDetailEntity().setSopId((String) obj));
}
},
/*******************sopDirectory*****************/
SOPDIRECTORY_IDLIST("根据SOP主键构建"){
public SopDirectoryEntity buildSopDirectoryEntity(Object obj){
return SopDirectoryConvert.INSTANCE.convertAoToEn(
new SopDirectoryEntity().setIncludeIdList((List<String>)obj));
}
};
private String desc;
public SopEntity buildSopEntity(Object obj){return null;}
public SopDetailEntity buildSopDetailEntity(Object obj){return null;}
public SopDirectoryEntity buildSopDirectoryEntity(Object obj){return null;}
}
三、注意
1:枚举需要给get方法以及构造器
2:建议根据传入参数类型来设定不同的枚举,比如参数一个参数,枚举为EmSingleBuilder