我剛剛爲別人提出了以下模式。當我想要爲測試注入依賴關係的能力時,我已經使用了它幾次,但仍然希望外部人員能夠看到這個後門(有點)。因此,空公共構造函數和內部構造函數的說法:TDD /注入與信息隱藏之間的戰鬥 - 可能的妥協?
public class ClassThatUseInjection
{
private readonly SomeClass _injectedClass;
public ClassThatUseInjection(): this(new SomeClass()) {}
internal ClassThatUseInjection(SomeClass injectedClass)
{
_injectedClass = injectedClass;
}
}
public class SomeClass
{
public object SomeProperty { get; set; }
}
我的想法是,既然空的構造函數什麼都不做,但有一個新的實例轉發,我的罪是不是太糟糕。你怎麼看?太臭了嗎?
問候, 莫滕
在什麼情況下,你考慮DI後門? –
我並沒有在這裏降低後門的價值:-)我喜歡注入,但有時注入顯而易見的代碼會降低可讀性。 – Morten
Perhps你可以/應該說SomeClass也是內部的,而不是公共的。 – ChrisW