减少工厂类GetObj中的参数数量

时间:2014-02-13 05:33:05

标签: c# parameters factory factory-pattern

这是一个普遍的问题,这就是下面没有太多代码的原因。我查看了stackoverflow并且没有看到解决方案(可能错过了它)。

一般来说,如果类工厂中的GetObj如下所示,是否有更好的方法将参数信息提供给GetObj中正在创建的对象的构造函数?每个构造函数使用传递给GetObj的不同参数子集。为了清楚起见,我目前使用命名参数来传递它们,但是有很多参数似乎应该有一个更好的解决方案来清晰。任何想法(例如使用结构都是一个想法)?可以采用其他模式吗?谢谢。

public class <FactoryName>
{
     static public <InterfaceName> GetObj(
            <type1> <param1>,
            <type2> <param2>,
            <type3> <param3>,
            <type4> <param4>,
            <type5> <param5>,
            <type6> <param6>) 
    {...}
    ...
}

2 个答案:

答案 0 :(得分:1)

基于这些参数创建工厂对象听起来不太好,我觉得你需要重新考虑这种方法并需要简化。但在这种情况下,结构/类将会这样做。如果所有参数都是相同类型,则通用集合将起作用。

答案 1 :(得分:1)

您可以传入地图(键值对),而不是传入一长串参数。这具有额外的优势(或者不利,取决于你如何看待它),允许参数只是通过不将它们包含在地图中而是可选的。

这种方法对显式参数的挑战之一是保持文档的准确性 - 地图属性的关键是什么,以及哪些是可选的。