2016-09-01 3 views
1

У меня есть завод:Factory Pattern - с дополнительными параметрами

public static class AdapterFactory 
    { 

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

Моя проблема заключается в том, что иногда в середине, TID, параметры siteId и версия не требуется, чтобы построить «адаптер», они являются специфичными только некоторые виды адаптеров.

Каков наилучший подход, когда параметры не всегда требуются, как в этой ситуации?

Благодарим за помощь.

+0

Это? https://msdn.microsoft.com/en-us/library/dd264739.aspx –

ответ

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

Также рассмотрите шаблон строителя.

+0

Спасибо, я поеду с более специализированными фабриками. – Andrew

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