gpt4 book ai didi

java - 3 层架构 - 从较低层通知 gui

转载 作者:行者123 更新时间:2023-11-30 04:23:48 25 4
gpt4 key购买 nike

我正在用java创建一个3层应用程序,它由GUI、业务逻辑层和数据库层组成。所有层都是客户端的。

根据多层架构的定义,只允许调用相同或较低的层并返回相同或较高的层。

就我而言,在用户单击按钮后我会执行大量数据库查询。我希望在我的 GUI 中有一个状态字段,其中显示当前查询的表。

因为所有层都在同一个应用程序中,所以我可以在循环表时调用数据库层的方法来更新状态字段。但这样做会打破只调用较低层或同一层的规则。

那么在三层架构中从较低层更新或通知 gui 的“合法”方式是什么?

最佳答案

我建议使用观察者模式。通过使用 java.util.Observable 类(作为主题)和 java.util.Observer 接口(interface),您仍然可以保留约定。

  1. 您可以通过子类化 java.util.Observer(GUI 层)来创建具体的观察者
  2. 通过子类化 java.util.Observable(DAO 层)来创建一个具体的主题
  3. 您可以将具体的观察者附加到具体的主题上。 (引用较低层并不违反约定!)
  4. 单击按钮会通过将 concreate 观察者实例委托(delegate)为 java.util.Observer 类型来调用所需的方法(业务层或 DAO 层)。因此 DAO 层永远不需要引用 GUI 层。
<小时/>

因此 GUI 调用如下方法:

BusinessImpl#doDAOStuff(java.util.Observer observer){
...
dao.performStatements(observer);
....
}

DAO 实现应该如下所示:

DAOImpl#performStatements(java.util.Observer observer){
String stmt;
...

// do insert ...
observer.update(this, stmt);

...
// do update ...
observer.update(this, stmt);

...
}

这只是伪源代码,但我认为它涵盖了主要概念。

关于java - 3 层架构 - 从较低层通知 gui,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16375783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com