我正在通过摆弄一个现有的项目,在通往TDD的道路上尝试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;
}
...
}
ThatTing使用它的ThisThingBase引用来调用经常被ThisThingBase的后代重载的方法。
方法1和方法2是公开的。方法3和方法4是内部的,仅由ThatThings使用。
我想在没有ThisThing的情况下测试ThatThing,反之亦然。
研究IoC时,我的第一个想法是,我应该定义一个IThing接口,通过ThisThingBase实现它,并将其传递给ThatThing构造函数。IThing将是客户端可以调用的公共接口,但它不包括ThatTing也需要的Method3或Method4。
我是否应该为这两个方法定义第二个接口(可能是IThingInternal),并将这两个接口都传递给ThatTing?