Java 让一个类持有指向大多数对象的指针,并通过它引用对象,这是一种不好的做法吗?

Java 让一个类持有指向大多数对象的指针,并通过它引用对象,这是一种不好的做法吗?,java,pointers,structure,Java,Pointers,Structure,我正在做我的第一个更大的项目,有很多组件。当我遇到需要在不同类的多个对象之间进行通信时,我决定创建一个状态类,它包含指向所有重要对象的指针,并通过构造函数将其传递给每个新对象。因此,要访问该对象,我将始终使用state.object.method();在同时运行时,我还使用它通过两个状态对象将服务器与客户机分开 所以,由于我不是一个专业的程序员(现在:),我非常关心thing程序的结构,并以一种“正确”的方式构建它,我在其他任何地方都没有见过这种情况。这是一个像样的结构吗?还是有些问题我还没看到

我正在做我的第一个更大的项目,有很多组件。当我遇到需要在不同类的多个对象之间进行通信时,我决定创建一个状态类,它包含指向所有重要对象的指针,并通过构造函数将其传递给每个新对象。因此,要访问该对象,我将始终使用state.object.method();在同时运行时,我还使用它通过两个状态对象将服务器与客户机分开

所以,由于我不是一个专业的程序员(现在:),我非常关心thing程序的结构,并以一种“正确”的方式构建它,我在其他任何地方都没有见过这种情况。这是一个像样的结构吗?还是有些问题我还没看到?我不是在用正确的OO方式思考吗

如果这是一个很好的方法,我想这个洞的问题是主观的,不应该在这里讨论。如果是这样,我很抱歉


-担心结构的编码员。(如果他觉得代码变得难看,他可以夜以继日地尝试重新构造)

最好使用依赖项注入,其中每个类都传递它所依赖的所有对象。对于通知/发布情况,您可以使用观察者模式或侦听器模式,其中组件将数据发布到代理,侦听器将侦听该数据。使用这两个模型,您应该能够将状态减少到6个对象以下,或者完全删除它。

最好使用依赖项注入,其中每个类都传递它所依赖的所有对象。对于通知/发布情况,您可以使用观察者模式或侦听器模式,其中组件将数据发布到代理,侦听器将侦听该数据。使用这两种模型,您应该能够将状态减少到少于6个对象或将其完全删除。

您创建了一种管理器对象,通过管理对象集合来处理应用程序的“状态”

对该管理器的引用(在应用程序中接近单例)将传递给应用程序对象的构造函数。这创建了一种带有扭曲的依赖项注入,即实际的依赖项是通过额外的间接使用来检索的

我想说,这是否是一个好的设计很大程度上取决于您的应用程序模型。我不使用公共成员,而是使用getter方法来检索引用,从而提供按需创建的选项

如果您的应用程序的引用从构建的角度来看是稳定的(即,您的经理保留的对象在应用程序生命周期中不会改变)您可以将类更改为使用传递给构造的管理器引用来检索它们需要的对象引用,并使用它们初始化对象引用属性

大多数最佳设计都取决于应用程序的底层模型。需要注意的是过于静态的定义、对象之间依赖关系的创建、生命周期属性(如按需创建对象与应用程序初始化时创建对象)以及对象之间引用的数量(如果您的经理引用了应用程序中的所有其他对象,则可能有问题)


根据您提供的信息,我不认为您的设计是不好的做法(任何代码库都可以改进,不要通过不断重构来“完善”您的代码来创建自己的移动目标。)

您创建了一种管理器对象来处理“状态”通过管理一组对象来管理应用程序

对该管理器的引用(在应用程序中接近单例)将传递给应用程序对象的构造函数。这创建了一种带有扭曲的依赖项注入,即实际的依赖项是通过额外的间接使用来检索的

我想说,这是否是一个好的设计很大程度上取决于您的应用程序模型。我不使用公共成员,而是使用getter方法来检索引用,从而提供按需创建的选项

如果您的应用程序的引用从构建的角度来看是稳定的(即,您的经理保留的对象在应用程序生命周期中不会改变)您可以将类更改为使用传递给构造的管理器引用来检索它们需要的对象引用,并使用它们初始化对象引用属性

大多数最佳设计都取决于应用程序的底层模型。需要注意的是过于静态的定义、对象之间依赖关系的创建、生命周期属性(如按需创建对象与应用程序初始化时创建对象)以及对象之间引用的数量(如果您的经理引用了应用程序中的所有其他对象,则可能有问题)

根据你给我们的信息,我不认为你的设计是不好的做法(任何代码库都可以改进,不要为了“完善”你的代码而不断重构,从而创建你自己的移动目标。)