代码之家  ›  专栏  ›  技术社区  ›  devoured elysium

更好的方法是在接口上嵌入依赖项,或者让具体的类来完成这个任务?

  •  0
  • devoured elysium  · 技术社区  · 14 年前

    在设计我的小应用程序时,我不得不面对一个问题。有什么理由让我更喜欢

    alt text

    alt text

    ?

    如果是,为什么?如果没有,是否有任何具体的情况下,有一个明显的优势,在一个办法比另一个?

    我倾向于使用第一种方法,尽管我不太确定为什么。我想可能是因为有些IBonus的具体实现可能根本不需要依赖,而第二种方法是将我绑定到某个东西上。例如,存根/模拟类。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Michael Aaron Safyan    14 年前

    听起来你对这个问题很了解。我同意您的观点,即可能存在一个不具有依赖性的实现,因此最好不要被束缚。我通常更喜欢第一种方法,就像你一样,出于同样的原因,并且通常鼓励这种选择。

    一般来说,如果依赖项是一个实现细节,那么它应该传递给具体实现的构造函数。如果参数是计算的定义/性质的内在参数,那么最好传入参数。在另一种情况下,在接口中传递参数是一个好主意,这涉及到变异;对于重入,最好传递一个您修改过的参数,而不是修改实现的状态,因此如果预期有任何副作用,那么我将鼓励传递要变异的对象。除此之外,我同意你的观点。