我已经提供了一个银行应用程序,我应该对其进行修改,以便在每个GUI屏幕上更新帐户余额。这应该在我的例子中用RMI(Observable)完成。我已经完成了这项工作,至少,我几乎可以肯定。
有一个名为IBankingSession
的REMOTE接口。
此REMOTE接口应该有setGUI(BankSessionController)
之类的方法或类似的方法。但是,这是不可能的,因为JavaFX部分不是Serializable
。 IBankingSession
与GUI没有任何关系。
如何将IBankingSession
的实例链接到此GUI?所以我可以从这个实例更新GUI?在REMOTE界面中创建类似setGUI
的方法也感觉很奇怪。因为GUI当然是在与创建会话的屏幕相同的屏幕上。
我很好奇一些好主意。提前谢谢。
IBankingSession session = desk.logIn(tfAccount.getText(), tfPassword.getText());
答案 0 :(得分:2)
首先:你不想链接你的"遥控器"直接向您的本地客户使用它。 IBankingSession没有任何关于您的客户希望使用JavaFx在用户屏幕上放置内容的事情。
相反,尝试这样的事情:定义一个允许回调的接口(换句话说:某种" push"模型):
客户端向远程服务器注册;告诉它:"我对平衡更新感兴趣"。
然后,在"平衡"更新时,远程服务将该信息推送给每个客户端。
现在将通知每个客户;然后可以决定如何处理传入的更新;例如,更新一些JavaFx UI组件;或者,将它们记录到一些持久存储中 - 为您提供一种可能对各种不同用例有用的机制。
答案 1 :(得分:2)
你根本不应该使用observables,当然也不应该使用网络。
就RMI而言,你应该在客户端回调的性质上大力避免任何事情。有防火墙问题,延迟问题,连接问题,......各种可能导致客户失火的事情。
你需要彻底重新考虑这一点。这不是一个可行的设计。