(1)是什么?
策略模式其实很简单,就是针对不同的场景,做出不同的处理策略
(2)策略模式的优缺点:
优点:
(1)可以砍掉代码中过多的if else if 和 switch case语句,使代码更加整洁优雅,一定程度上提高了性能。
(2) 新增类型或者场景仅仅需要新增一个处理策略,不需要改动旧代码,遵循了开闭原则,更好维护。
缺点:
(1)如果场景过多,会产成过多的策略类,一定程度上增加了理解成本
(3)怎么用?(案例演示)
假设有一个需求,是根据传入的类型Type的不同,构造出不同的对象并且调用相对应的逻辑,这是一个很常见的日常需求,如果type较少,我们可能会直接写if … else if … else if …;type类型多,我们进一步考虑switch case,但是这些都可以用策略模式来优化
如下面的例子,我要根据穿进去的type,决定是构建一个游泳池pool,还是一个花园garden,还是一个迷宫maze,代码可以写成:
controller:
@GetMapping("/strategy2/{type}")
public String strategy2(@PathVariable String type){
// 模拟容器,事先创建好对应的对象
Map