我有建造不同尺寸汽车的汽车工厂。 我有两家工厂:美国和泰国,生产大小,中等和小型车。 但我有一个问题:泰国工厂不生产大型汽车。
代码:
public enum CarSize { Big, Middle, Little,}
public interface ICarFactory {
ICar CreateCar(CarSize carSize);
}
public class USACarFactory : ICarFactory {
public ICar CreateCar(CarSize carSize) {
ICar car = null;
switch (carSize) {
case CarSize.Little:
car = new USALittleCar();
break;
case CarSize.Middle:
car = new USAMiddleCar();
break;
case CarSize.Big:
car = new USABigCar();
break;
}
return car;
}
}
public class ThailandCarFactory : ICarFactory {
public ICar CreateCar(CarSize carSize){
ICar car = null;
switch (carSize) {
case CarSize.Little:
car = new ThailandLittleCar();
break;
case CarSize.Middle:
car = new ThailandMiddleCar();
break;
case CarSize.Big:
//no big cars in Thailand!!!!
break;
}
return car;
}
}
public interface ICar { }
public class USABigCar : ICar { }
public class USAMiddleCar : ICar { }
public class USALittleCar : ICar { }
public class ThailandMiddleCar : ICar { }
public class ThailandLittleCar : ICar { }
我该怎么办? 我的抽象工厂设计不合理吗?
答案 0 :(得分:0)
@zzfima,从COM中获取这个想法,如果支持创建指定大小的汽车并适当调用,如何查询界面并找出它?代码肯定会实现抽象工厂模式。
答案 1 :(得分:0)
case CarSize.Big:
car = new ThailandBigCar();
break;
试试吧。这应该可以让你制造大型汽车。
public interface ICar { }
public class USABigCar : ICar { }
public class USAMiddleCar : ICar { }
public class USALittleCar : ICar { }
public class ThailandMiddleCar : ICar { }
public class ThailandLittleCar : ICar { }
public class ThailandBigCar : ICar { }