我是设计模式的新手,我在这里有一个场景。我不确定如何实现模式。
我想要使用抽象工厂模式的每个供应商的特定产品。
到目前为止我的实施:
public enum TvType
{
Samsung = 0, LG = 1, Philips = 2, Sony = 3
}
public enum Product
{
Plasma = 0, NormalTV = 1
}
返回每个产品的每个供应商的具体类以及包含ProductInfo的接口,即如果供应商是 那么它必须具有此产品。
答案 0 :(得分:0)
在伪代码中,它可能是这样的:
interface TvFactory {
NormalTelevision createNormalTv();
PlasmaTelevision createPlasmaTv();
}
class PhilipsTvFactory implements TvFactory {
public NormalTelevision createNormalTv() {
return new PhilipsNormalTelevision();
}
public PlasmaTelevision createPlasmaTv() {
return new PhilipsPlasmaTelevision();
}
}
class OnidaTvFactory implements TvFactory {
public NormalTelevision createNormalTv() {
return new OnidaNormalTelevision();
}
public PlasmaTelevision createPlasmaTv() {
return new OnidaPlasmaTelevision();
}
}
// similarly for other vendors...
...
// decides - maybe based on config - which factory to use
TvFactory factory = loadTvFactory();
Television myTv = factory.createPlasmaTv();
答案 1 :(得分:0)
枚举是邪恶的。用接口替换它们:
public interface IVendor { /*...*/ }
然后,您可以为每个供应商提供IVender的具体实现。
public class Samsung : IVendor { /*...*/ }
public class Philips : IVendor { /*...*/ }
public class Sony : IVendor { /*...*/ }
我不清楚为什么你会问抽象工厂,或者你想要做什么......