目前我在实例化 AbstractFactory 时遇到问题。有一些类:
abstract class ABase { }
class A1 : ABase { }
class A2 : ABase { }
abstract class BBase { }
class B1 : BBase
{
private readonly A1 _a;
public B1(A1 a)
{
_a = a;
}
}
class B2 : BBase
{
private readonly A2 _a;
public B2(A2 a)
{
_a = a;
}
}
abstract class FactoryBBase
{
abstract public BBase Create(ABase b);
}
class FactoryB1 : FactoryBBase
{
override public BBase Create(ABase b)
{
return new B1(b as A1);
}
}
class FactoryB2 : FactoryBBase
{
override public BBase Create(ABase b)
{
return new B2(b as A2);
}
}
class Runtime
{
public void ProcessA(ABase a)
{
//How should I choose a proper factory?
}
}
如何在 ProcessA
中实例化一个正确的抽象工厂方法取决于 a
的类型?问题是我不想有一个大的 if/else block 。
最佳答案
how to instantiate a proper abstract factory in ProcessA method depending on the type of a?
为了避免大的 if/else block ,您可以将所有工厂放入一个映射中,其中键是 a
的类型,值是实现。在 Java 中,我会通过 Spring 来完成此操作,或者创建一个静态代码,该代码可以在加载类时初始化 map 。
do I use AbstractFactory pattern as it is supposed to be uesd?
恕我直言,是的。
关于c# - 我应该如何选择 AbstractFactory 的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30344041/