直接注入直接对象依赖项或方法

时间:2011-05-03 03:31:58

标签: dependency-injection

我在一些地方读过DI的最佳做法是不是为了获得对象C而注入对象B,而是注入C来代替。

但是如果只需要C中的一个方法,你会注入该方法而不是C吗?

如果是这样,那么如果需要C中的一些方法呢?有没有一点,传递完整的对象更方便,并且你得到了你不感兴趣的东西?

或者这一点是否表明C类可能有太多不同的责任,需要被提取到多个较小的类中,然后可以在没有太多包袱的情况下注入其对象?

不要害怕陈述显而易见的事,这对我来说都是新的。

1 个答案:

答案 0 :(得分:3)

如果依赖项有多种方法而不是你关心的方法,那么这是一个非常好的迹象,表明Header Interface违反了Interface Segregation Principle

如果您可以控制界面,我建议将其拆分为几个较小的Role Interfaces。如果对您的特定实现更有意义,您仍然可以拥有一个实现多个角色接口的具体类。

如果你不控制依赖项的设计,我倾向于注入整个界面,因为它仍然代表了一个有凝聚力的行为集合(即使我们不同意原设计师的设计选择) )。稍后您可能需要更多这种行为。