从其他对象调用 public 对象变量和方法是不好的做法吗?

Is it bad practice to call public object vars and methods from other objects?

在从事图像处理项目时学习Java,我注意到一个坏习惯spring: 我将创建一个对象,该对象将创建一个不同的对象,传递一些变量,然后所述对象又创建另一个对象,传递变量以创建它。这些对象通常是需要一些用户输入的设置 windows。

最后我发现自己有时会使用 TopObject.SecondObject.methodDoesThing(TopObject.SecondObject.variable,TopObject.variable);

来引用父对象 methods/variables

甚至都来自第三个对象! 这是一种可怕的做法吗?我该如何避免呢?我应该复制粘贴我需要重用的任何方法吗?我是否应该将对象 3 中需要的任何变量传递给对象 2,即使它 2 也不会使用它只是为了避免回调 public 变量?还是这很好,我只是想多了?

拥有 public 成员变量几乎总是不好的做法。如果它们是 public,则意味着任何人都可以轻松更改它们。

在 OOP 中有一个叫做 Encapsulation 的术语,它很短,意思是代码应该限制对其内部工作和结构的访问。

如何避免像您描述的那样长时间的通话?这是一个相当棘手的问题,因为它因场景而异。我的第一个建议是阅读 design patterns。尽管仅仅应用它们并不能解决问题,但它会给你新的想法,让你知道如何正确设计你的内部代码和结构,以便有明确的职责。

我将从一些简单但广泛使用的开始:Factory、Observer、Singleton、Visitor 和 Model-view-controller。要牢记的一件重要事情是,设计模式是指南,它们 can/should 可以进行调整和组合。应用程序将在不同部分和不同功能中使用多种模式。

很抱歉,我不能直接给出更直接的答案,但对于这样的问题,我认为比代码更好地指导所需的阅读材料。