【发布时间】:2012-12-04 16:55:41
【问题描述】:
我试图了解 UI 组件应如何在 Java 中连接。就常规的“服务器”类而言,我正在尝试使用接口并使用 Spring 注入所有内容。如果是 UI,是否应该使用类似的方法?
更准确地说,让我们考虑以下几点:
class Panel1 extends JPanel{
public Panel1(Service service, DBConnector db);
}
class Panel2 extends JPanel{
public Panel1(Delegate delegate, Executor exec);
}
class MainFrame{
public MainFrame(Service service, DBConnector db, Delegate delegate, Executor exec){
Panel1 p = new Panel1(service, db);
Panel1 p = new Panel1(delegate, exec);
}
}
对
class MainFrame{
public MainFrame(Panel1 panel1, Panel2 panel2){
}
}
我只是想大致了解一下什么在 UI 世界中更合适,如果它与常规类完全不同(可能是因为主框架中可能涉及许多面板)
【问题讨论】:
-
使用构造函数是传递引用的一种方式。但我个人会避免混合图层。一种方法是拥有一个控制器类(MVC 的一部分)并将其与底层服务和数据库层的引用联系起来。顺便说一句,代表是做什么的?
-
顺便说一句,您在 Swing 中成功调用 Spring 的应用程序上下文了吗?因为到目前为止,我必须通过将引用存储在静态变量中以使其可访问。
-
这是一个随机示例 - 那么您更喜欢哪种方法?在某些时候,我需要实例化一个包含很多面板的 JFrame,它要么需要将所有需要的参数作为参数,要么采用每个面板,或者采用工厂,但工厂随后必须采用所有服务等。什么是正确的方法:)?
-
一些 Swing 程序员似乎想出了自己的秘诀。我要做的是类似于在link 上使用调解器策略的 MVC。然后让控制器扮演 UI 和服务层接口之间的中间人。这样可以更好地解耦,并且可以将一个或多个视图(可以是 JPanel)挂接到同一个模型中。
-
你能举个例子吗,因为我看不到 JPanel 将如何通过中介使用服务
标签: java swing dependency-injection