我尝试理解 SOLID 原理,因此实现了一些 java 代码片段。我现在关心的是OCP。有以下样品,
public abstract class Bakery
{
public abstract Bakegood bake();
}
/******************************************/
public class BreadBakery extends Bakery {
@Override
public Bakegood bake() {
return new Bread();
}
}
/******************************************/
public class CakeBakery extends Bakery {
@Override
public Bakegood bake() {
return new Cake();
}
}
/******************************************/
我怎样才能创建合适的面包店。假设一位顾客来到面包店并说:“请给我两个蛋糕!”,那么我如何实例化 CakeBakery。当然,我可以创建一个抽象工厂,例如:
public static Bakery createBakery(final String orderedBakegood)
{
switch(bakegood)
{
case "Cake": return new CakeBakery();
case "Bread": return new BreadBakery();
default: throw new InvalidBakeryException();
}
}
但我不想使用 switch 或 if 语句。还有其他可能性还是我的理解完全错误?