我正在通過擺弄現有項目,在前往TDD的途中嘗試IoC。簡而言之,我的問題是:當公共和非公開方法受到關注時,IoC的最佳做法是什麼?IoC和接口最佳實踐
有兩類:
public abstract class ThisThingBase
{
public virtual void Method1() {}
public virtual void Method2() {}
public ThatThing GetThat()
{
return new ThatThing(this);
}
internal virtual void Method3() {}
internal virtual void Method4() {}
}
public class Thathing
{
public ThatThing(ThisThingBase thing)
{
m_thing = thing;
}
...
}
ThatThing不使用其ThisThingBase引用調用經常被ThisThingBase的後代重載方法的一些東西。
方法1和方法2是公共的。 Method3和Method4是內部的,只能由ThatThings使用。
我想測試沒有ThisThing的ThatThing,反之亦然。
研究IoC我的第一個想法是我應該定義一個IThing接口,通過ThisThingBase實現它並將它傳遞給ThatThing構造函數。 IThing是客戶可以調用的公共接口,但不包括ThatThing也需要的Method3或Method4。
我應該爲這兩種方法定義第二接口 - IThingInternal也許 - 並將兩個接口傳遞給ThatThing?
有關ThatThing工廠的優秀觀點 - 實際上有一個,但我擔心我的帖子太長了。也許我不應該編造整個thisthing/thathing的東西。該項目用於業餘無線電和接口到物理設備。我認爲這太過分了。 – n8wrl 2008-12-02 18:35:18