基于spring的特性,目前在适配器模式中使用过
编写一个抽象父类,子类继承后实现抽象方法
public abstract class BaseService {
// 子类类型枚举
private TypeEnum type;
public BaseService(TypeEnum type) {
this.type= type;
}
// 判断子类类型
boolean supported(TypeEnum type) {
return Objects.equals(this.type, type);
}
public abstract Object method();
}
子类需要交给bean去管理
@Component
public class ChildrenAdapter extends BaseService {
public ChildrenAdapter() {
super(TypeEnum.ONE);
}
@Override
public Object method(){
...
}
}
其他方法调用父类,直接自动注入父类集合 获取所有子类
@Component
public class DataServiceParser {
@Autowired List<BaseService> baseServiceList;
/** 获取服务层 */
public BaseService getBaseServiceParser(String type) {
TypeEnum type = TypeEnum.toEnum(type);
if (null != type) {
for (BaseService baseService : baseServiceList) {
if (baseService.supported(type)) {
return baseService;
}
}
}
throw new MyException("未找到该类型服务 - " + type);
}
/** 方法的调用 */
public Object query(Param param){
BaseService baseSerivce = getBaseServiceParser(param.getType());
return baseSerivce.method();
}
}