我有一家工厂:
public static class AdapterFactory
{
public static IAdapter GetAdapter(AdapterType claimType, int mid, int tid, int siteId, string version)
{
}
}
我的问题是,有时不需要mid,tid,siteId和version参数来构造“Adapter”,它们仅适用于某些类型的适配器。
在这种情况下,如果不总是需要参数,最好的方法是什么?
感谢您的帮助。
答案 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);