策略模式和多态很相似
可以理解为定义了一个统一的接口,有许多不同的实现类,可以自由选择不同的实时类去执行。
实现上代码:
public interface CalcStrategy {
void calc(String ql);
}
@Service
public class HelloService implements CalcStrategy {
@Override
public void calc(String ql) throws SupportPortalException {
System.out.println("hello : " + ql);
}
}
@Service
public class WorldService implements CalcStrategy {
@Override
public void calc(String ql) throws SupportPortalException {
System.out.println("world : " + ql);
}
}
@Component
public class DataCalcStrategy {
@Autowired
private Map<String, CalcStrategy> calcStrategyMap = new HashMap<>();
public void calc(String type, String ql) {
CalcStrategy calcService = calcStrategyMap.get(type);
calcService.calc(ql);
}
}
@Test
public void contextLoads() throws SupportPortalException {
dataCalcStrategy.calc("helloService", "666");
dataCalcStrategy.calc("worldService", "777");
}
@Autowired
private Map<String, CalcStrategy> calcStrategyMap = new HashMap<>();
会把所有实现了CalcStrategy接口的类,放入这个map中,key是这些实现类bean的名称
public void calc(String type, String ql) {
CalcStrategy calcService = calcStrategyMap.get(type);
calcService.calc(ql);
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |