Em *_* Ae 5 java architecture software-design
我正在做一个项目.我试图将核心实现为独立的jar文件,可以从命令行甚至是Windows服务运行.核心负责跟踪几个文件并发送一些通知电子邮件.问题是,保持GUI完全独立的最佳想法是什么?
GUI需要与核心进行交互
我用Delphi和C开发了这个软件.C用于编写核心逻辑并使用Windows消息和回调,我在C dll/service上注册了Delphi GUI.我很困惑如何在java中实现它.
PS:我在这里讨论它的原因是在用Java编码时学习和探索这种软件的更好设计.我不是要求Observer Pattern文档或客户端服务器架构.可能还有其他可能的方法,我不知道.所以我期待任何想法,设计或框架.
观察者模式实际上是 4 个用例中的 3 个的正确答案。
根据您的描述,您的核心可能会实现以下接口:
public interface Core {
sendFiles(List<File> files);
registerProgressListener(ProgressListener listener);
registerStatusListener(StatusListener listener);
registerMessageListener(MessageListener listener);
}
Run Code Online (Sandbox Code Playgroud)
侦听器界面看起来与此非常相似
public interface ProgressListener{
madeProgress(ProgressEvent)
}
Run Code Online (Sandbox Code Playgroud)
ProgressEvent(和其他事件类)应该是值对象,例如
public class ProgressEvent {
public final double progress;
public final String fileName;
public ... // constructor
}
Run Code Online (Sandbox Code Playgroud)
您可能希望您的核心和 GUI 在不同的线程中运行。否则,当核心运行时,您的 GUI 将不会对任何事件做出反应。由于核心不应该了解有关 GUI 的任何信息,因此线程之间的切换应由 GUI 完成,即侦听器应注意使用SwingUtilities.invokeLater或invokeAndWait更新 GUI。
| 归档时间: |
|
| 查看次数: |
1119 次 |
| 最近记录: |