繁体   English   中英

有关Java中OOP的一些问题

[英]Some questions about OOP in Java

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

为了能够在GUI类和Logic类之间进行通信,我首先创建Logic类的对象,然后在GUI类内部进行操作,因为在这里有我的主要方法。 这是最好的方法吗? 我是否需要在GUI-和Logic类之间使用某种引用变量,或者仅在GUI类的开头创建对象时使用引用? 我想能够与一个类进行交流,它必须首先是一个对象! 谢谢!

Logic logic = new Logic(); 

logic.addCustomer(name, number);

理想情况下,您不应该直接创建逻辑类。 您应该将功能分解为多个小类,每个小类都可以履行职责。

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

您可以在http://en.wikipedia.org/wiki/Event-driven_programming上阅读有关事件驱动程序的信息。

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

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

许多其他答案告诉您要查看MVC,但这可能对您的项目而言过于矫kill过正。 对于大型项目,它可以降低复杂性,而对于小型项目,则可以增加复杂性。

编辑:

Logic login = new Logic();
...
MyGUI gui = new MyGUI(logic);
...

您可以在主对象中创建Logic类型的on对象,并将该对象的引用存储在Window对象中-这样,只要窗口存在,就可以访问Logic对象。

对于这种琐碎的场景,您应该查找Singleton设计模式

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

另外,您可以查看单例类,该类将仅返回该类的一个实例。 在该类中,实例化全局所需的所有对象,然后在整个程序中重新使用该实例。

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

但是这种方法是不可扩展的。 随着您的应用程序变得越来越复杂,开发和支持变得越来越困难。 尝试考虑“ 模型-视图-控制器”模式来定义最佳设计方式。 (根据您的昵称,我将冒险提出其他链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM