工厂模式 - 带有可选参数

Factory Pattern - with optional parameters

我有一个工厂:

  public static class AdapterFactory
  {

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

我的问题是,有时构建 "Adapter" 不需要 mid、tid、siteId 和 version 参数,它们仅特定于某些类型的适配器。

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

感谢您的帮助。

看看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);

专业化和制造更多的工厂,例如:

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

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

还要考虑构建器模式。