2016-09-01 11 views
1

と私は工場を持っている:私の問題は時々半ば、TID、のsiteIdとバージョンのパラメータは、「アダプタ」を構築するために必要でないということであるファクトリパターン - オプションのパラメータ

public static class AdapterFactory 
    { 

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

、彼らだけに固有のものですいくつかの種類のアダプタ。

このような状況でパラメータが常に必要なわけではない場合の最良の方法は何ですか?

ありがとうございました。

+0

これは? https://msdn.microsoft.com/en-us/library/dd264739.aspx –

答えて

2

Specalise例えば、より多くの工場を作る:

あなたは

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 
    } 
} 

が今ように使用することができ、それらを必要としない場合は、それらを省略し、その後、パラメータにデフォルト値を与えることができます

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

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

ビルダーパターンについても考慮してください。

+0

ありがとう、私はより専門的な工場に行きます。 – Andrew

0

optional argumentsをご覧ください。

var adapter1 = AdapterFactory.GetAdapter(AdapterType.Regular, 1000, 50, 10, "1.0.0.0"); 
var adapter2 = AdapterFactory.GetAdapter(AdapterType.Minimal); 
関連する問題