这是一个普遍的问题,这就是下面没有太多代码的原因。我查看了stackoverflow并且没有看到解决方案(可能错过了它)。
一般来说,如果类工厂中的GetObj如下所示,是否有更好的方法将参数信息提供给GetObj中正在创建的对象的构造函数?每个构造函数使用传递给GetObj的不同参数子集。为了清楚起见,我目前使用命名参数来传递它们,但是有很多参数似乎应该有一个更好的解决方案来清晰。任何想法(例如使用结构都是一个想法)?可以采用其他模式吗?谢谢。
public class <FactoryName>
{
static public <InterfaceName> GetObj(
<type1> <param1>,
<type2> <param2>,
<type3> <param3>,
<type4> <param4>,
<type5> <param5>,
<type6> <param6>)
{...}
...
}
答案 0 :(得分:1)
基于这些参数创建工厂对象听起来不太好,我觉得你需要重新考虑这种方法并需要简化。但在这种情况下,结构/类将会这样做。如果所有参数都是相同类型,则通用集合将起作用。
答案 1 :(得分:1)
您可以传入地图(键值对),而不是传入一长串参数。这具有额外的优势(或者不利,取决于你如何看待它),允许参数只是通过不将它们包含在地图中而是可选的。
这种方法对显式参数的挑战之一是保持文档的准确性 - 地图属性的关键是什么,以及哪些是可选的。