工厂模式 - 带可选参数

时间:2016-09-01 22:25:14

标签: c# factory-pattern

我有一家工厂:

  public static class AdapterFactory
  {

    public static IAdapter GetAdapter(AdapterType claimType, int mid, int tid, int siteId, string version)
    {
    }
}

我的问题是,有时不需要mid,tid,siteId和version参数来构造“Adapter”,它们仅适用于某些类型的适配器。

在这种情况下,如果不总是需要参数,最好的方法是什么?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

Specalise并建造更多工厂,例如:

public static class MidAdapterFactory
{
    public static IAdapter GetAdapter(AdapterType claimType, int mid)
    {
    }
}

public static class TidAdapterFactory
{
    public static IAdapter GetAdapter(AdapterType claimType, int tid)
    {
    }
}

还要考虑构建器模式。

答案 1 :(得分:0)

看看optional arguments。您可以提供参数默认值,如果您不需要,则省略它们

public static class AdapterFactory
{
    public static IAdapter GetAdapter(AdapterType claimType, 
                                      int mid = 0, 
                                      int tid = 0, 
                                      int siteID = 0, 
                                      string version = null)
    {
        // Create adapter here
    }
}

现在可以这样使用:

var adapter1 = AdapterFactory.GetAdapter(AdapterType.Regular, 1000, 50, 10, "1.0.0.0");
var adapter2 = AdapterFactory.GetAdapter(AdapterType.Minimal);