是否最好在类(B类)中调用方法(来自类A),然后在类(C)中调用方法或在类B中使用类C的getter?

时间:2017-09-11 09:32:53

标签: java coding-style getter composition

E.g。

在A组:

b.doThing();

在B组:

doThing() {
    c.doThing();
}

OR

在A班:

b.getClassC().doThing();

这种情况的惯例是什么?

3 个答案:

答案 0 :(得分:7)

根据Law of Demeter,你应该采用第一种方式,即只调用自己委托给类C的类B的方法。这样,你减少了类之间的依赖关系,这对于可重用性和可维护性。

答案 1 :(得分:0)

通常它将是第二种情况,除非实现类不仅仅执行一行,例如设置/检查状态或准备其他方法等。

这样做的最大好处是您无需通过调用

来担心实现细节
b.getClassC().doThing();

您不关心doThing是否会在结构上或有条不紊地改变,否则您将提供更多参数。

答案 2 :(得分:0)

面向对象是指让对象为你做事。因此,你最好不要让'b'做某事,然后它会调用'c'这一事实对你来说是隐藏的,并且可以在将来改变它。你不想问'b'的组件对象,然后对它们做些什么。