策略模式
定义
当处理一个业务时,有多种处理方式,并且需要在运行时决定使用那一种具体实现时,可以使用策略模式。
定义一组算法,将每个算法都封装起来,并且使他们之间可以互相切换。
个人理解:
策略模式将接口对象作为参数,通过接口对象调用接口实现类方法,
根据传入的接口实现类参数,实现对应的策略方法。
使用较少,一旦策略类过多反而不好。
优缺点
优点
可自由切换方法,避免多种条件判断,扩展性好
缺点
策略类数量会增多,每个策略都是一个类,复用性小
案例:
场景1:支付(支付宝支付,信用卡支付,微信支付)
场景2:出行(自行车,电动车,机动车)
代码
1,接口工具
public interface VehicleInter {
void goOutByTool();
}
2,接口工具实现类
public class Car implements VehicleInter {
@Override
public void goOutByTool() {
System.out.println("开汽车出行");
}
}
public class Bicycle implements VehicleInter {
@Override
public void goOutByTool() {
System.out.println("骑自行车出行");
}
}
public class Electric implements VehicleInter {
@Override
public void goOutByTool() {
System.out.println("骑电动车出行");
}
}
3,工具策略类
public class VehicleService {
//工具接口类为参数,调用接口方法
public void goOutByVehicle(VehicleInter vehicle){
vehicle.goOutByTool();//子类实现该方法
}
}
4,测试
public class VehicleTest {
public static void main(String[] args) {
VehicleService vehicleInter = new VehicleService();
vehicleInter.goOutByVehicle(new Car());
vehicleInter.goOutByVehicle(new Bicycle());
vehicleInter.goOutByVehicle(new Electric());
}
}
//输出
开汽车出行
骑自行车出行
骑电动车出行