请原谅这个问题的冗长,因为在写它时我正在尝试思考我的设计问题!
我继承了一个 Swing 应用程序,它需要重新构建到 RMI 应用程序中。客户要求 Swing GUI 在本地运行并通过 RMI 与远程服务器进程通信,该进程包含一个 Controller 类,该类在 EventListeners 的刺激下将调用定向到业务逻辑和后端数据库持久性部分,从而弥合了 Swing 客户端之间的差距和控制器。
我将实现 MVC 设计,以允许开发新的视图以与服务器一起使用。
目前,Swing 客户端 GUI 包含一个使用 DefaultTreeModel 填充的 JTree。该模型是使用 DefaultMutableTreeNode 对象构建的,这些对象通过位于这些对象和我的数据源之间的业务对象映射器填充业务对象状态。
我理解 Client 和 TreeModel 的链接方式没有问题:我已经建立了 TreeModelListener 来查看 TreeModel 的更改。如果 TreeModel 对象发生变化,我通过调用它的 treeHasChanged() 方法来重绘 JTree。
但是,我很难想象什么进程会刺激 TreeModel,以便用数据库中的最新数据重新填充其内容,这反过来又会调用我的 TreeModelListener 来更新我的 GUI 的 Jtree。谁应该“拥有”TreeModel?它应该是构成控制器状态的模型中的一个类吗?GUI 的 EventListeners 在控制器中的操作是否应该进行硬调用以运行例程以刷新 TreeModel?
或者,TreeModel 是 GUI 小部件的扩展,在这种情况下它是视图组件?如果是这样,调用该对象状态刷新的正确方式是什么?
我可能应该注意到,最近几天我一直在考虑观察者和听众,所以我可能对试图在观察者开火后调用行为发生感到内疚。
你的,很迷茫!