客户如何以工厂模式访问混凝土产品

问题描述 投票:0回答:1

[在c#中实现Factory方法时,我有几个具体的产品,比如ConcretProductAConcretProductB,其中每个ConcretProduct都有一个公共字符串Name。我面临的问题是我需要创建所有ConcretProducts名称的列表。例如,此列表将用于使用户能够在运行时在组合框中选择一种产品。

因此,我需要具有读取所有ConcretProducts名称的能力,而无需为所有可用的concretProducts实例化实例,读取名称(我很可能必须使其静态)并将其存储在例如枚举中。如果不是直接可以,该界面可以帮助我吗?

这行得通吗?还是有更好的解决方案?

c# class design-patterns factory
1个回答
0
投票

我可以想到3个解决方案:

a)我将尝试找到一种将产品名称存储在单独列表中的方法。

b)一种可能性是使用反射。如果所有产品都派生自基本类型,则可以从程序集中加载所有派生类型,并将名称传播到UI。

c)您也可以将属性放在类上。这样,您可以将易读的名称放置在UI上,而无需进行转换。

解决方案b和c的问题在于,没有分离的关注点,尤其是对于c而言,因为您的域层必须知道产品的显示名称。本地化也可能变得非常困难

© www.soinside.com 2019 - 2024. All rights reserved.