关于Java中OOP的几个问题

关于Java中OOP的几个问题,java,Java,我有一个GUI类,带有按钮和文本字段的菜单。根据在菜单和输入中所做的选择,GUI类中的方法调用Logic类中的方法来发送输入并创建Customer类和Account类等的新对象 为了能够在GUI和Logic类之间进行通信,我首先创建Logic类的一个对象,然后在GUI类中进行通信,因为这里有我的主要方法。这是最好的方法吗?在GUI和逻辑类之间需要某种引用变量,还是在GUI类的开头创建对象时使用引用?我猜要想与类通信,它首先必须是一个对象!?谢谢 Logic logic = new Logic()

我有一个GUI类,带有按钮和文本字段的菜单。根据在菜单和输入中所做的选择,GUI类中的方法调用Logic类中的方法来发送输入并创建Customer类和Account类等的新对象

为了能够在GUI和Logic类之间进行通信,我首先创建Logic类的一个对象,然后在GUI类中进行通信,因为这里有我的主要方法。这是最好的方法吗?在GUI和逻辑类之间需要某种引用变量,还是在GUI类的开头创建对象时使用引用?我猜要想与类通信,它首先必须是一个对象!?谢谢

Logic logic = new Logic(); 

logic.addCustomer(name, number);

您可以在main中创建逻辑类型的on对象,并在Window对象中存储对象的引用,这样,只要窗口存在,您就可以访问逻辑对象。

您可以在main中创建逻辑类型的on对象,并在Window对象中存储对象的引用,这样,只要窗口存在。

您应该在中查找此类琐碎场景。

您应该在中查找此类琐碎场景。

默认情况下,Java使用引用变量。因此,如果在GUI类中实例化对象,请确保通过方法调用将对象发送到处理类


或者,您可以查看单例类,它将只返回该类的一个实例。在该类中,实例化全局需要的所有对象,并在整个程序中重用该实例。

默认情况下,Java使用引用变量。因此,如果在GUI类中实例化对象,请确保通过方法调用将对象发送到处理类


或者,您可以查看单例类,它将只返回该类的一个实例。在该类中,实例化全局需要的所有对象,并在整个程序中重用该实例。

理想情况下,不应直接创建逻辑类。 您应该将功能分解为许多小类,每个小类都满足一个职责

一种简单的方法是GUI类创建侦听用户事件的侦听器。为了响应use事件,它们触发逻辑为其自身注册的事件。然后,当接收到事件时,逻辑类可以执行该功能。 您应该阅读有关观察者模式、事件驱动设计


您可以在这里阅读事件驱动编程。

理想情况下,您不应该直接创建逻辑类。 您应该将功能分解为许多小类,每个小类都满足一个职责

一种简单的方法是GUI类创建侦听用户事件的侦听器。为了响应use事件,它们触发逻辑为其自身注册的事件。然后,当接收到事件时,逻辑类可以执行该功能。 您应该阅读有关观察者模式、事件驱动设计


您可以在这里阅读有关事件驱动编程的内容。

通常您可以。如果你的应用程序很简单


但这种方法是不可扩展的。随着应用程序变得越来越复杂,开发和支持变得越来越困难。试着考虑模式来为你的设计定义一个最佳的方法。(根据你的昵称,我愿意冒险求婚)

通常你可以。如果你的应用程序很简单


但这种方法是不可扩展的。随着应用程序变得越来越复杂,开发和支持变得越来越困难。试着考虑模式来为你的设计定义一个最佳的方法。(根据你的昵称,我冒昧地提出建议)

我建议你对这个问题做一些研究。您的GUI(视图)不应该直接与您的模型(逻辑)交互。实现一个控制器,该控制器将从您的视图中获取“信号”,并负责创建您的“逻辑对象”并使用它们。

我建议您对这些对象进行一些研究。您的GUI(视图)不应该直接与您的模型(逻辑)交互。实现一个控制器,该控制器将从您的视图中获取“信号”,并负责创建“逻辑对象”并使用它们。

我将在GUI外部实例化逻辑类,但将其作为参数传递给GUI构造函数。它几乎等同于您已经在做的事情,但我认为它更清楚地表明GUI使用了逻辑对象。此外,逻辑可能在GUI启动/关闭之前/之后做一些其他事情;现在可能不是这样,但如果你扩展你的程序,将来可能会是这样

许多其他的答案告诉你要看MVC,但这对你的项目来说可能太过分了。它可以降低大型项目的复杂性,但会增加小型项目的复杂性

编辑:


我将在GUI外部实例化逻辑类,但将其作为参数传递给GUI构造函数。它几乎等同于您已经在做的事情,但我认为它更清楚地表明GUI使用了逻辑对象。此外,逻辑可能在GUI启动/关闭之前/之后做一些其他事情;现在可能不是这样,但如果你扩展你的程序,将来可能会是这样

许多其他的答案告诉你要看MVC,但这对你的项目来说可能太过分了。它可以降低大型项目的复杂性,但会增加小型项目的复杂性

编辑:


嗨,我有GUI类的听众。由于这是一项我必须交的任务,而且需要有一个逻辑类,所以我认为这是在GUI类中创建逻辑对象的最佳方法。或者如何实现?接收事件的类应该创建逻辑类。可以将事件处理程序视为控制器。这样,您的逻辑类是解耦的,可以独立使用
Logic login = new Logic();
...
MyGUI gui = new MyGUI(logic);
...