所以说我有 A、B 和 C 类。A 类有一个单一的责任,但需要 B 类和 C 类的功能,所以起初我想让 A 从 B 和 C 继承,然后通过遵循“继承的组合”来实现原则和使 AI 的 B 和 C 成员可以降低设计的刚性,并使这两个类更具可重用性。
起初 B 和 C 只需要在 A 的构造函数中进行实例化,但最终它们的方法需要在其他两三个地方调用——因为我在其他地方重用了这些类,我忘记调用正确的地方会造成很多不必要的缺陷和浪费时间......我的问题是依赖注入是否有助于解决这个问题,它是否有助于降低使用组合的复杂性,如果是的话如何?
public class A
{
private mB;
private mC;
public A(IB b, IC c)
{
mB = b;
mC = c;
}
public MethodX()
{
mB.DoWhatever();
}
public MethodY()
{
mC.DoSomething();
}
}
据我了解,DI 可以让我配置 IB 和 IC 的哪些具体类像这样通过构造函数并处理它的创建 - 但它还有什么帮助(复杂性方面)?
由于不理解这篇文章,我决定问这个问题:http: //lostechies.com/chadmyers/2010/02/13/composition-versus-inheritance/
对于现实生活中的示例,假设我有一个包含 EventListener 类的 State 类,该类必须在 State 调用其 Begin 方法时注册其事件,在调用其 End 方法时取消注册。