我正在尝试在摇摆应用程序中应用 MVC 模式。但是,鉴于您具有嵌套的面板层次结构,例如 Parent -> Child -> Grand Child -> Grand Grand Child,我面临两个主要问题。
问题1:当你有这样的层次结构时,如何在控制器和视图之间传输数据?如果我去将数据从父母传递给孩子,那么会有很多重复,如果我改变一个孩子,所有父母都需要改变。我不希望视图直接访问数据库中的数据,我希望数据仅通过控制器传输到视图。
问题 2:如何在这样的层次结构中将事件从视图传播到控制器?我正在考虑使用 PropertyChangeListener。如果控制器必须采取任何行动,View 将触发PropertyChange 事件。控制器将监听这些事件并执行一些操作。但是,如果我为层次结构这样做,那么就会有代码重复。
我有三个可能有用的想法:
- 要为每个面板使用控制器,但这样我最终会得到很多控制器。
- 使用将提供视图和控制器之间的通信的中介者设计模式。
- 使用 Central Reciever & Notifier 监听来自视图的所有属性更改事件,并通知感兴趣的控制器。但这只会解决我的第二个问题:
请参考下图以了解第三个想法的图片。如果是第 2 个,Mediator 将居中。
请评估并让我知道是否有人以更好的方式实施了此类问题。