1.定义策略接口
策略接口
/*** 车辆事件接口*/
public interface CarEvent {/*** 车辆状态变更事件*/void carStatusChangeEvent();
}
2.定义各种策略
定义各种实现策略,电子围栏、实时数据 等都实现这个接口。
电子围栏
/*** 电子围栏 ElectronicFence*/
@Service("electronicFence")
public class ElectronicFence implements CarEvent {@Overridepublic void carStatusChangeEvent() {System.out.println("电子围栏");}
}
实时数据
/*** 实时数据 RealTimeData*/
@Service("realTimeData")
public class RealTimeData implements CarEvent {@Overridepublic void carStatusChangeEvent() {System.out.println("实时数据");}
}
这里我把所有实现类都用 @Service 注解生成 Bean 放入 Spring Bean 容器中了,在使用策略的时候就不用 new 支付对象了,可以直接使用 Bean。
示例代码
@Autowiredprivate CarNet carNet;@Autowiredprivate ApplicationContext applicationContext;@GetMapping("/getList")public List<String> getList(@RequestParam String vin) {List<String> list = carNet.getList(vin);list.forEach(s ->{CarEvent bean = applicationContext.getBean(s, CarEvent.class);bean.carStatusChangeEvent();});return list;}
测试一下:
http://localhost:88/test/getList?vin=VIN123
打印结果: