在Java中,通过方法传递对象或变量的频率是多少?

在Java中,通过方法传递对象或变量的频率是多少?,java,swing,object,jframe,jpanel,Java,Swing,Object,Jframe,Jpanel,我是stackoverflow新手,很抱歉,如果这个问题已经被问过了,但是当我搜索包含我的问题的问题时,我找不到一个 我的问题是: 在Java中,我正在创建一个游戏(只是为了好玩,我正在学习编码)。你用一个启动器登录我的游戏。但是,如果您没有帐户,您可以注册。我更喜欢的是使用一个框架。我有一个包含启动器元素和寄存器元素的面板。我正在努力学习如何编写代码,如果另一个人正在我的项目中工作,他不一定需要查看所有代码来完成一些工作。换句话说,我使用包对类进行排序。示例:启动器的类位于包启动器中。寄存器的

我是stackoverflow新手,很抱歉,如果这个问题已经被问过了,但是当我搜索包含我的问题的问题时,我找不到一个

我的问题是:

在Java中,我正在创建一个游戏(只是为了好玩,我正在学习编码)。你用一个启动器登录我的游戏。但是,如果您没有帐户,您可以注册。我更喜欢的是使用一个框架。我有一个包含启动器元素和寄存器元素的面板。我正在努力学习如何编写代码,如果另一个人正在我的项目中工作,他不一定需要查看所有代码来完成一些工作。换句话说,我使用包对类进行排序。示例:启动器的类位于包启动器中。寄存器的类位于包寄存器中

在我的代码中,有一个名为Display extensing JFrame的类。Display在类中用main方法实例化。Display有两种方法用于删除面板和添加面板,如果使用这两种方法中的任何一种,则需要传递JPanel。在实例化Display之后,它在构造函数内实例化一个jpanel。这将显示所有组件。事件侦听器位于另一个类中。因此,我将按钮和显示传递给该类,因为下面是按钮寄存器的eventlistener代码。在我的register类中,我定义并实例化了所有必要的组件。我将显示传递给所有类,直到它到达扩展jpanel的register类。我甚至通过了Launcher课程。现在,我可以使用display中的方法删除启动器面板并添加我的寄存器面板

我的问题: 这是好代码还是杀伤力过大?


我再也没有在main方法之后实例化Display。我总是声明它并将其设置为已通过的显示。我这样做是因为实例化一个新的显示将意味着不必要地使用内存,而在java中传递对象实际上是一个通过引用传递的过程,这意味着它不是传递对象,而是传递一个指向对象的指针。所以这意味着更少的内存使用。

这就是我在最后一段中写的,仍然感谢你。有很多方法可以实现你似乎正在尝试的目标。就个人而言,我会避免“暴露”顶级容器,因为其他组件不应该真正关心,它们只需要它的一些支持,比如访问
glassPane
JMenuBar
或其他什么,但这些可以通过其他管理器控制,所以它们甚至不需要直接访问它们。关键是要对代码进行解耦,因此,如果您想在
JInternalFrame
s中显示组件,则无需更改组件的代码即可执行此操作,我强烈建议您查看并查看。您需要的是某种控制器,它知道导航应该如何工作(因为登录面板不应该关心注册面板是如何实现的,它只需要要求控制器显示它)