欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > 替代 if else -------策略模式

替代 if else -------策略模式

2024/10/24 5:17:23 来源:https://blog.csdn.net/w12345ll/article/details/139760596  浏览:    关键词:替代 if else -------策略模式
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

打印结果:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com