最好是在 class (class B) 中调用一个方法(从 class A),然后在 class (C) 中调用一个方法,还是使用一个getter Class C 在 Class B 中?
Is it best to call a method (from class A) in a class (class B) which then calls a method in a class (C) or to use a getter for Class C in Class B?
例如
在Class答:
b.doThing();
在Class B:
doThing() {
c.doThing();
}
或
在class答:
b.getClassC().doThing();
这种情况的惯例是什么?
通常是第二种情况,除非实施 class 不仅仅是执行一行,例如 setting/checking 状态或准备其他方法等
这样做的最大好处是您无需通过调用
来担心实现细节
b.getClassC().doThing();
您不关心 doThing
是否会在结构上或方法上发生变化,您会在其中提供更多参数,否则。
根据Law of Demeter,你应该走第一种方式,即只调用class B的方法,它本身委托给class C。这样,你减少了依赖在您的 classes 之间,这对于可重用性和可维护性来说基本上是一件好事。
面向对象是关于让对象为你做事。因此你最好让 'b' 做一些事情,然后它调用 'c' 的事实对你是隐藏的,并且它可以在未来被微不足道地改变。您不想向 'b' 询问它的组件对象,然后用它们做一些事情。
例如
在Class答:
b.doThing();
在Class B:
doThing() {
c.doThing();
}
或
在class答:
b.getClassC().doThing();
这种情况的惯例是什么?
通常是第二种情况,除非实施 class 不仅仅是执行一行,例如 setting/checking 状态或准备其他方法等
这样做的最大好处是您无需通过调用
来担心实现细节b.getClassC().doThing();
您不关心 doThing
是否会在结构上或方法上发生变化,您会在其中提供更多参数,否则。
根据Law of Demeter,你应该走第一种方式,即只调用class B的方法,它本身委托给class C。这样,你减少了依赖在您的 classes 之间,这对于可重用性和可维护性来说基本上是一件好事。
面向对象是关于让对象为你做事。因此你最好让 'b' 做一些事情,然后它调用 'c' 的事实对你是隐藏的,并且它可以在未来被微不足道地改变。您不想向 'b' 询问它的组件对象,然后用它们做一些事情。