策略模式(Strategy Pattern):
策略模式可以避免代码中过多的判断语句,使代码更清晰,便于扩展和切换。但是如果过多的策略会导致文件繁多,而且服务端必须知道每一个策略,不易于管理。
策略模式就是对于同一件事,拥有不同的对待方法。感觉上和模板方法模式有些相似,只不过模板方法会规定一个算法,子类去继承。策略模式会规定一件事,类似于Interface。举个简单的例子,类似于现在某网上商城的会员制,如果你是会员买东西时就可以享受折扣价,并每月可享受几次免邮,但是普通用户就只能原价并自己出邮费,针对不同的用户采取不同的策略。这样的场景情况下如果采用策略模式就可以大大减少代码中的if(){}else{}的数量,使代码清晰易懂。
示例:
1.首先创建一个接口car,规定他可以跑:
public interface CarInterface {
public void run();
}
2.然后再创建两个实现类跑车和卡车,当然它们跑起来速度会不一样:public class SportsCarImpl implements CarInterface {
public void run(){
System.out.println("速度200迈...");
}
}
public class TruckImpl implements CarInterface {
public void run(){
System.out.println("速度70迈....。。。。");
}
}
3.因为项目用了springboot,可以使用@Autowired,将接口注入到一个map里:
public static void main(String[] args){
@Autowired
private Map(String, CarInterface) carInterface;
public void start(){
carInterface.get("sportsCarImpl").run();
}
}
优缺点:策略模式可以避免代码中过多的判断语句,使代码更清晰,便于扩展和切换。但是如果过多的策略会导致文件繁多,而且服务端必须知道每一个策略,不易于管理。