gpt4 book ai didi

java - 调用低于 2 度或更多度的函数

转载 作者:行者123 更新时间:2023-12-01 12:29:09 26 4
gpt4 key购买 nike

我确信这是 OOP 中的一个经典案例,对于大多数程序员来说答案都是直截了当的,但我似乎没有在任何地方找到解释。假设我有一个属于类 A 的方法,在类 B 中实例化,如以下代码所示:

class A
{
public void foo() {/*do something*/}
}

class B
{
public A objectA;

public B()
{
objectA = new A();
}

public void call()
{
objectA.foo();
}
}

现在假设我有第三个类 C 来实例化类 B(B 又用上面的代码实例化类 A):

class C
{
public C()
{
objectB = new B();
}
}

从类 C 调用函数 foo() 的最佳方法是什么(如果有):

objectB.call();

否则

objectB.objectA.foo();

我觉得第一个选项可能是模块化方面的正确答案,但如果 B 类永远不必调用 foo() ,它似乎是多余的。 这里有一个好的答案吗?还是整个模式本质上有缺陷?如果是,它违反了什么设计原则以及解决方法是什么?

最佳答案

在大多数情况下,objectA 一开始就不应该公开。考虑到它是 B 类的状态,我想说只有 B 及其子类应该能够直接使用它,所以我更喜欢第一个选项。

但是,如果它确实是公共(public)的,则意味着外部类被认为具有足够的信息来直接操作它,或者它们可以在不改变 B 实例的状态的情况下做到这一点。在这种情况下(这种情况一定很少见),第二种选择就可以了。

关于java - 调用低于 2 度或更多度的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26090567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com