Model view controller MVP模式:多个演讲者应该分离还是可以直接交流?
我有一个如下所示的ui:Model view controller MVP模式:多个演讲者应该分离还是可以直接交流?,model-view-controller,mvvm,mvp,Model View Controller,Mvvm,Mvp,我有一个如下所示的ui: +--------+---------------+ | model1 | model details | | model2 | here, | | model3 | loaded as the | | | user selects | | | a model from | | | the left. | | |
+--------+---------------+
| model1 | model details |
| model2 | here, |
| model3 | loaded as the |
| | user selects |
| | a model from |
| | the left. |
| | |
+--------+---------------+
我正在使用驱动此ui
我在这里简化了很多,但为了分而治之,我想将演示者分为两个:一个处理左侧视图中的用户手势(用户在此视图中更改模型列表,例如排序),另一个处理右侧视图中的用户手势(用户在此视图中更改单个模型)
当左侧的演示者与整个模型列表交互时,右侧的演示者仅与单个模型交互:用户从左侧列表中选择的模型。从左到右驱动ui
用户选择(即单击)左侧的模型后,我当前的实现大致如下所示:
以下是我对wrt MVP模式或任何MVC GUI模式模糊的部分:
RightPresenter
表明用户在LeftPresenter
的视图中选择了一个模型的最佳方式是什么?1.ui可以由多个
像这样的主持人
对
2.是否应选择多个演示者
它们是解耦的还是可以通信的
如图所示,直接相互联系
这里
我处理它的方式是,我有一个这样的框架
当事件发生时,UI_对象处理创建和触发命令对象的事件。每个UI_对象实现UI_视图中的视图接口,并在UI_视图中注册自身。命令对象可以通过接口访问UI_视图中注册的UI对象
例如,在我的一个金属切削应用程序中,有一个称为HOLD的屏幕元素,其中包含尚未放置在金属板上进行切削的所有零件。零件可以通过多种方式进入HOLD。从零件文件加载,由形状编辑器创建,由CAD屏幕创建,或从金属板拾取
这些操作中的每一个都被封装到实现命令设计模式的单独命令对象中
CuttingScreen.Refresh
CADScreen.Refresh
ShapeEditor.Refresh
每一个都将刷新相应的屏幕,更新保持
现在,我可以向我的应用程序接口添加一个方法。MyCuttingApplication.HoldRefresh,它将依次调用所有三个refresh
但重要的一点是,视图调用一个命令,该命令使用视图实现的接口进行更新。视图对象在较低的层中注册自身
CuttingScreen.Refresh
CADScreen.Refresh
ShapeEditor.Refresh