gpt4 book ai didi

c# - 我应该如何选择 AbstractFactory 的实例?

转载 作者:行者123 更新时间:2023-11-30 21:58:00 26 4
gpt4 key购买 nike

目前我在实例化 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?
}
}

如何根据 a 的类型在 ProcessA 方法中实例化一个合适的抽象工厂?问题是我不想有一个很大的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com