策略模式的应用
来源:互联网 发布:收购淘宝卖家账号 编辑:程序博客网 时间:2024/06/05 18:17
在做mes系统的时候,有个需求是根据车辆品牌生成不同规则的VIN号,也就是每一辆车的身份证号,相当于ID。
目前是只有两个品牌,为了扩展性和灵活性避免很多的if...else...。可以采用策略模式进行优化。
原来这样实现:
public String getVin(String brand){ if(brand.equals("A")){//生成A品牌的VIN号}else if(brand.equals("B"){//生成B品牌的VIN号,规则和A不同}//...//...}
现在可以这样实现:
先定义一个接口VinProduct:
public interface VinProduct{public String getVin();}定义两个类实现该接口,分别生成各自规则的Vin号:
public class AVinImpl implements VinProduct{public String getVin(){//生成A品牌的VIN号}}public class BVinImpl implements VinProduct{public String getVin(){//生成B品牌的VIN号}}
配置对应的 properties:
A=com.mes.product.AVinImpl
B=com.mes.product.BVinImpl
读取properties文件,讲key和value放入map中:
Map<String,Object> map =new HashMap<>();map.put("A", AVinImpl); map.put("B", BVinImpl);<span style="font-family: Arial, Helvetica, sans-serif;"></span>
然后就可以这样实现:
public String getVin(String brand){ (VinProduct) product=(VinProduct)map.get(brand);//拿到策略类接口//生成VINString string=product.getVin(); return string;}
假如现在增加C品牌的车辆生成Vin号的规则也不同,那么只需要增加一个类实现VinProdcut接口,然后实现自己的生成Vin的方法,然后进行配置,就可以通过传不同的参数,反射不同的实现类,进行各自不同的生成Vin号的方法了。
0 0
- 策略模式的应用
- 策略模式的应用
- 策略模式的应用实践
- 策略模式的典型应用
- 策略设计模式的应用
- 应用泛型的策略模式
- 应用泛型的策略模式
- 应用泛型的策略模式
- 应用泛型的策略模式
- 应用泛型的策略模式
- 应用泛型的策略模式
- 策略模式的简单应用(C#)
- iOS策略模式的简单应用
- 策略模式典型应用
- 5. php设计模式:策略模式的实际应用
- 设计模式的应用场景(16)--策略模式
- 策略模式-应用代码示例
- 策略模式在简单的商场收费软件中的应用
- 猜数
- linux 实现查看文件大小的小程序
- 博客搬迁
- swift基础知识记录(一)
- Qt判断进程是否运行
- 策略模式的应用
- ZOJ-1005-Jugs【BFS+记录路径】
- 蓝桥杯_算法提高_学霸的迷宫(简单回溯法,没有减枝)
- QT:Qt4添加QSerialPort模块
- objective-c第三天 可变字符串和数组
- IOS学习之——画板 涂鸦
- Gson,Fast-Json解析 Demo
- poj 1979 Red and Black
- crash日志学习(初步)