我实施的MVP/演示模型UI模式是否正确?
-
26-09-2019 - |
题
我再工作一个它应用程序,想采用一种变化 演示模型图案 对于用户界面。可能有人告诉我如下的解释,如果我这样做是否正确?
我已决定设立依赖关系如下:
Model <---- Presentation Model <---- View
这是:
该模型是不知道还有什么,除了本身。
演示模型有一个参考模型(但不是反之亦然)。
有一个参考,以演示模型(但不是反之亦然)。
我使用它的数据结合,以保持景和演示模型的同步。
现在这一切工作就像一个魅力,除非当我需要处理,例如一击的一种形式的"关闭"的按钮。由于介绍的模型中没有参照来看,它不能同意任何事件发表的看法。因此,我已经想出了以下拐杖:
Presentation Model View
+--+ +--+
| | | |
| | | <--------X closeButton.Click event fires
| | | |
| | +--------X |
| | CloseRequested = true | | |
| | +--------> |
| | | |
| | CloseRequested CloseRequested | |
| <-----------------------------------< |
| | | |
| X--------+ | |
| | | IsClosed = true | |
| <--------+ | |
| | | |
| | IsClosed MustClose | |
| >-----------------------------------> |
| | | |
| | | X--------> view.Close()
| | | |
+--+ +--+
这是:
用户点击"关闭"的按钮。
按钮的
Click
事件中被捕获的图,其反应通过设置的财产CloseRequested
.数据结合传输这种价值相应的财产在呈现的模式。
所介绍的模型反应这种变化通过设置其财产
IsClosed
.数据结合传输这种价值进图的
MustClose
.图作出反应这种变化通过关闭本身。
演示模型是相当很好地隔离开来看,反之亦然,但是 这是一个很大的工作只处理一个按钮的命令.是否有一个更简单的方法,给依赖图我已经决定了?
解决方案
我最近已经转换窗户的形式应用程序的MVP构,并且它看起来像你已经设置了你的依赖在一个类似的方式为什么我一直在做的。然而,我只有一个 IPresenter
接口定义方法,以允许查看,以通过对用户的请求。作为查看已经有一个依赖的主持人和一个参考,它似乎是明智的简单的电话请求的方法上。
所以在我的系统中,主持人听到的事件的模型和火灾自己的演示事件的任何感兴趣的视听。图回应这些事件的更新本身为适当,和转发用户请求的主持人,当他们做出。
其他提示
这只是我的意见。
工作与表现型需要100%UI支持数据结合。甚至WPF不使附近的行动可绑定的.很多事情将不会工作的顺利进行中演示模型,例如消息框确认。即使它可以抽象与者的接口,但仍然没有味道很好,简单牺牲品。
在另一方面,主要目的演示模型试图逻辑。在某些情况下如果你的"接近行动"应该单元的测试,因为有一些逻辑之前就靠近然后你的代码是唯一的选择。但是如果它只是一个简单确认"你确定要退出"那你最好把那个放上看不在介绍模式,因为它不需要单元的测试。
有一个参考 演示模型(但不是副 之亦然)。
据我所知的介绍应该有一个refference查更为准确地界显示,以便呈现不对夫妇与具体景。然后在演示阶级你可以叫查方法和订阅查事件的通过显示.