1
我有一個spec translator
,如下所示。方法參數(依賴注入)的數據封裝考慮
//all specifications implement this base class
public abstract class SpecBase
{
public abstract void Translate(IContext context);
}
//spec translator implementation
public interface ISpecTranslator
{
void Translate(IContext context);
}
我需要注入SpecTranslator
構造函數的依賴關係。我有兩種方式來表達依賴性。
解決方案1
public class SpecTranslator:ISpecTranslator
{
IList<SpecBase> specs;
public SpecTranslator(IList<SpecBase> specs)
{
this.specs = specs;
}
}
請注意,使用IList<SpecBase>
作品了,但似乎解決方案2提供了更多的保護。
解決方案2:
public class SpecTranslator:ISpecTranslator
{
ISpec spec;
public SpecTranslator(ISpec spec)
{
this.spec = spec;
}
}
public interface ISpec
{
IList<SpecBase> specs {get;}
}
但是,使用構造函數依賴注入時的ISpec
實施有同樣的問題。
對這兩種解決方案或其他解決方案的利弊有何看法?
謝謝。它有助於。我喜歡。 – Pingpong