在做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