我有一个带有按钮和文本字段菜单的GUI类。根据菜单和输入中的选择,GUI类中的方法是调用Logic类中的方法来发送输入并创建Customer类和Account类的新对象,依此类推。
为了能够在GUI和Logic类之间进行通信,我首先创建一个Logic类的对象,然后在GUI类中创建它,因为它在这里我有我的主要方法。这是最好的方法吗?我是否需要GUI和Logic类之间的某种引用变量,或者只是在GUI类的开头创建对象时使用引用?我想能够与一个班级沟通,它必须首先是一个对象!?谢谢!
Logic logic = new Logic();
logic.addCustomer(name, number);
答案 0 :(得分:2)
理想情况下,您不应直接创建逻辑类。 您应该将功能分解为许多小类,每个小类都有责任。
一种简单的方法是GUI类创建监听用户事件的监听器。作为对使用事件的响应,它们触发您的逻辑自身注册的事件。然后,当接收到事件时,逻辑类可以执行该功能。 你应该阅读观察者模式,事件驱动设计......
您可以在此处阅读有关事件驱动编程的信息http://en.wikipedia.org/wiki/Event-driven_programming。
答案 1 :(得分:1)
我建议你对MVC architecture做一些研究。您的GUI(视图)不应直接与您的模型(逻辑)交互。实现一个控制器,它将从您的视图中获取“信号”,并负责创建“逻辑对象”并使用它们。
答案 2 :(得分:1)
我将在GUI外部实例化Logic类,但将其作为参数传递给GUI构造函数。它几乎等同于你已经在做的事情,但我认为它更清楚GUI使用Logic对象。此外,Logic可能会在GUI启动/关闭之前/之后执行其他一些操作;现在情况可能并非如此,但如果你扩展你的计划,将来也可能如此。
许多其他答案告诉您要查看MVC,但这可能对您的项目来说太过分了。它可以降低大型项目的复杂性,但会增加一个小项目的复杂性。
编辑:
Logic login = new Logic();
...
MyGUI gui = new MyGUI(logic);
...
答案 3 :(得分:0)
您可以在main中创建Logic类型的对象,并在Window对象中存储对象的引用 - 这样只要窗口存在就可以访问Logic对象。
答案 4 :(得分:0)
你应该查看Singleton design pattern这些琐碎的场景。
答案 5 :(得分:0)
默认情况下,Java使用Reference变量。因此,如果在GUI类中实例化对象,请确保通过方法调用将对象发送到处理类。
或者,您可以查看单例类,它只返回该类的一个实例。在该类中,实例化全局需要的所有对象,并在整个程序中重用该实例。
答案 6 :(得分:0)
一般情况下你可以。如果您的申请非常简单。
但这种方法不具备可扩展性。随着您的应用程序变得越来越复杂,开发和支持变得更加困难。尝试考虑Model–view–controller模式来定义设计的最佳方式。 (根据你的昵称,我会冒险提出 an alternative link)