我已经提供了一个银行应用程序,我应该对其进行修改,以便在每个 GUI 屏幕上更新帐户余额。在我的示例中,这应该使用 RMI(Observable) 来完成。我已经完成了这项工作,至少,我几乎可以肯定这一点。
有一个名为IBankingSession
的REMOTE 接口(interface)。
此 REMOTE 接口(interface)应具有类似 setGUI(BankSessionController)
或类似方法的方法。但是,这是不可能的,因为 JavaFX 部分不是Serializable
。 IBankingSession
与 GUI 没有任何关系。
如何将 IBankingSession
的实例链接到此 GUI?所以我可以从这个实例更新 GUI 吗?在REMOTE界面做一个setGUI
这样的方法也感觉怪怪的。因为 GUI 当然与创建 session 的屏幕位于同一屏幕上。
我很好奇一些好主意。提前致谢。
IBankingSession session = desk.logIn(tfAccount.getText(), tfPassword.getText());
最佳答案
首先:您不想将您的“远程”事物直接链接到使用它的本地客户。那个 IBankingSession 对您的客户想要使用 JavaFx 在用户屏幕上放置一些东西这一事实一无所知。
相反,尝试这样的事情:定义一个允许回调的接口(interface)(换句话说:某种“推送”模型):
客户端向远程服务器注册;告诉它:“我对余额更新感兴趣”。
然后,根据“余额”更新,远程服务将该信息推送给每个客户端。
现在每个客户都会收到通知;然后可以决定如何处理传入的更新;例如更新一些 JavaFx UI 组件;或者,将它们记录到一些持久存储中 - 为您提供一种可能对各种不同用例有用的机制。
关于Java 远程接口(interface)阻止使用我的 GUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37610733/