如果我有Swing GUI类和应用程序,我该如何管理这些对象之间的通信?我应该将GUI对象链接传递到应用程序或应用程序链接到GUI吗?
示例:
public class App{
public App()
{
GUI gui = new GUI(this)
}
}
或
public GUI{
public GUI()
{
App gui = new App(this)
}
}
答案 0 :(得分:2)
查看MVC pattern。理想情况下,您希望呈现您的应用程序,以便不同的GUI组件可以使用它(想象一下以后提供应用程序的Web / servlet视图,或命令行界面)。该要求禁止您的应用程序具有隐含的Swing知识。
答案 1 :(得分:1)
目前的答案都很好,但这里有一个非常重要的事情:你有“多线程”标签,但还没有人解决它。您肯定想要将MVC中的“C”视为线程化的东西,甚至可能希望通过管理器界面甚至是视图界面来遵循管理器设计模式 - 使用界面将有助于拓宽您的选择范围更多用于未来的重构,甚至重新设计。在过去,我使用了java.util.observer和java.util.observable - Java中的原始MVC模式:) - 以应对通信问题。请记住不要阻止你的主线程,否则你的GUI会冻结。是的,MVC是一个很好的开始,但在App-> GUI中你描述的不仅仅是MVC,想想整个GUI作为你的应用程序的View,Model很可能是某种数据集(DataBase,平面文件,状态信息)和控制器你的应用程序。请记住GUI很可能至少有一个接口。
答案 2 :(得分:0)
是的,MVC模式会有所帮助。你真的想要消除两个组件之间的紧耦合。或者至少,与后者一起,意思是:
public GUI {
public GUI() {
App gui = new App(this)
}
}
这样,至少你的应用程序逻辑不依赖于你的GUI,或者是你的GUI。