在spring中当一个接口有多个实现类的时候,通过创建简单工厂类,根据传入的不同的参数获取不同的接口实现类。
public interface ExecuteService {
ExecuteEnum getCode();
// 业务方法
void execute();
}
@Service
public class FirstExecuteServiceImpl implements ExecuteService {
@Override
public ExecuteEnum getCode() {
return ExecuteEnum.FIRST;
}
public void execute() {
System.out.println("11111111111");
}
}
@Service
public class SecondExecuteServiceImpl implements ExecuteService {
@Override
public ExecuteEnum getCode() {
return ExecuteEnum.SECOND;
}
public void execute() {
System.out.println("222222222");
}
}
public enum ExecuteEnum {
FIRST,
SECOND,;
}
方案一
@Component
public class ExecuteServiceFactory implements ApplicationContextAware {
private final static Map<ExecuteEnum, ExecuteService> EXECUTE