我正在开发一种称为多种方法的摇摆应用程序。初始化不同的类。 我也有多个线程来处理中间结果。我的要求是在运行中在某些标签和文本框上显示中间数据。
请帮助我以下哪种方法在内存和性能方面最佳。
第一种方法会产生更多开销,因为我需要将我的Swing类对象传递给其他类。
第二种方法是最简单的方法,但是创建静态对象可能会造成混淆,因为此应用程序包含线程。
我只是想知道要去哪一个以及为什么?
否则,如果有人参与了一些复杂的摇摆应用程序开发 - 你是如何处理这类问题的?
答案 0 :(得分:3)
此example是您在多线程上下文中的第一种方法的典型。为方便起见,模型和视图紧密耦合:每个工作线程接收对应更新的标签的引用。另一种方法是松散耦合:每个视图都注册以侦听模型,该模型使用observer pattern通知所有已注册的侦听器。
这个更简单的example使用两种方法:
紧密耦合:工作人员在封闭范围内获取对其目标标签的引用。
松散耦合:封闭视图会注册PropertyChangeListener
,模型会通过setProgress()
向该视图发出信号。
您需要确定哪个在您的应用中很重要。我同意@JB Nizet关于第二种方法的评论。
答案 1 :(得分:1)
为什么不使用带有Singleton原理的第二种方法,你可以使用相同的swing类实例,所以不会使用静态 ,它有时令人困惑,因为我们不确定JVM加载静态成员的顺序......
答案 2 :(得分:1)
将GUI视为具有视图的模型。 GUI组件构成视图,同时创建表示模型的模型类。模型中值的更改将反映在视图中。应用程序的其余部分与模型交互,而不是视图。
以下是我所做的Java Spirograph GUI的一个例子。