加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何使Java GUI与Core完全分离

发布时间:2020-12-14 19:18:59 所属栏目:Java 来源:网络整理
导读:我正在做一个项目.我试图将核心实现为独立的jar文件,可以从命令行甚至是Windows服务运行.核心负责跟踪几个文件并发送一些通知电子邮件.问题是,保持GUI完全独立的最佳想法是什么? GUI需要与核心进行交互 发送文件列表 从核心接收有关这些文件已处理多少的通

我正在做一个项目.我试图将核心实现为独立的jar文件,可以从命令行甚至是Windows服务运行.核心负责跟踪几个文件并发送一些通知电子邮件.问题是,保持GUI完全独立的最佳想法是什么?

GUI需要与核心进行交互

>发送文件列表
>从核心接收有关这些文件已处理多少的通知
>接收有关文件的状态通知,即SEND /处理/失败等,以便在GUI中显示
>如果有来自核心的传入消息,则接收信息

我用Delphi和C开发了这个软件.C用于编写核心逻辑并使用Windows消息和回调,我在C dll / service上注册了Delphi GUI.我很困惑如何在java中实现它.

>观察者模式?
>核心和gui之间的小客户端/服务器通信?

P.S:
我在这里讨论它的原因是在用Java编码时学习和探索这种软件的更好设计.我不是要求Observer Pattern文档或客户端服务器架构.可能还有其他可能的方法,我不知道.所以我期待任何想法,设计或框架.

最佳答案
对于你的4个用例中的3个,Oberserver Pattern真的是正确的答案.

在您的描述级别上,您的核心可能实现了以下接口:

public interface Core {

    sendFiles(List

侦听器接口看起来与此类似

public interface ProgressListener{
    madeProgress(ProgressEvent)
}

ProgressEvent(和其他Event类)应该是值对象,例如

public class ProgressEvent {
    public final double progress;
    public final String fileName;
    public ... // constructor
}

你可能希望你的核心和你的gui在不同的线程中运行.否则,当核心运行时,GUI不会对任何事件做出反应.由于核心不应该知道关于GUI的任何信息,因此线程之间的切换应该由GUI完成,即,监听器应该注意使用SwingUtilities.invokeLater或invokeAndWait来更新GUI.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读