想要改善这篇文章吗? 提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。
当超越RAD(拖放和配置)构建用户界面的方式时,许多工具鼓励您使用三种设计模式,分别称为Model-
View-
Controller
,Model-
View-
Presenter和Model-
View-ViewModel。我的问题包括三个部分:
在 MVP中
,Presenter包含视图的UI业务逻辑。View委托的所有调用均直接传递给Presenter。演示者也直接从视图中分离出来,并通过界面与之对话。这是为了在单元测试中模拟View。MVP的一个共同属性是必须有很多双向分配。例如,当有人单击“保存”按钮时,事件处理程序将委托给演示者的“
OnSave”方法。销售完成后,演示者将通过其界面回调视图,以便视图可以显示保存已完成。
MVP往往是在WebForms中实现独立表示的一种非常自然的模式。原因是View总是首先由ASP.NET运行时创建。您可以找到有关这两种变体的更多信息。
被动视图:
视图尽可能愚蠢,并且包含几乎为零的逻辑。演示者是与视图和模型对话的中间人。视图和模型完全相互屏蔽。模型可以引发事件,但是演示者订阅了这些事件以更新视图。在Passive
View中,没有直接的数据绑定,相反,该View公开了Presenter用于设置数据的setter属性。所有状态都在Presenter中管理,而不是在View中管理。
监督控制器:
演示者处理用户手势。视图通过数据绑定直接绑定到模型。在这种情况下,演示者的工作是将模型传递给视图,以便可以绑定到视图。演示者还将包含诸如按下按钮,导航等手势的逻辑。
在 MVC中
,控制器负责确定响应于任何操作(包括应用程序何时加载)而显示哪个视图。这与MVP不同,在MVP中,操作通过视图路由到演示者。在MVC中,视图中的每个动作都与对控制器的调用以及一个动作相关联。在网络中,每个动作都涉及对URL的调用,在该URL的另一侧有一个Controller响应。该控制器完成处理后,将返回正确的视图。在应用程序的整个生命周期中,序列都以这种方式继续:
视图中的操作
->呼叫控制器
->控制器逻辑
->控制器返回视图。
关于MVC的另一大区别是,视图不直接绑定到模型。该视图仅呈现并且完全无状态。在MVC的实现中,视图通常在后面的代码中没有任何逻辑。这与绝对必要的MVP相反,因为如果View不委托给Presenter,它将永远不会被调用。
另一个要看的模式是 演示模型 模式。在这种模式下,没有演示者。而是,视图直接绑定到演示模型。Presentation
Model是专门为View设计的模型。这意味着此模型可以公开一个永远不会放在域模型上的属性,因为这将违反关注点分离。在这种情况下,表示模型绑定到域模型,并且可以订阅来自该模型的事件。然后,View订阅来自Presentation
Model的事件并相应地更新自身。Presentation
Model可以公开视图用于调用动作的命令。这种方法的优点是,由于PM完全封装了视图的所有行为,因此您基本上可以完全删除后面的代码。模型-视图-
视图模型。
在MSDN上有关于演示模型的文章,在WPF(前棱镜)的复合应用指南中有关于单独的演示模式的部分
如果我们在Google上搜索“MVC,MVP和MVVM设计模式之间的差异”,那么我们可能会得到一些从理论上讨论MVC,MVP和MVVM设计模式之间差异的URL: MVP 在无法通过“DataContext”绑定的情况下使用。Windows窗体就是一个很好的例子。为了将视图与模型分离,需要一个演示者。由于视图不能直接绑定到演示者,因此必须通过接口(IView)将信息传递给视图。 MVVM 用于可能通
本文向大家介绍Spring Boot、Spring MVC 和 Spring 有什么区别?相关面试题,主要包含被问及Spring Boot、Spring MVC 和 Spring 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 SpringFramework SpringFramework 最重要的特征是依赖注入。所有 SpringModules 不是依赖注入就是 IOC 控制反转。 当我
问题内容: 我将启动一个Java项目来开发桌面应用程序。什么用作表示层模式(MVC,MVP,MVVM或…)? …如果可能的话,给出一些可行的小例子… :-) 问题答案: 其实,你在寻找最终的帖子是 这样回答 这个答案 从卡斯滕Lentzsch共同领导(JGoodies数据的名望)在 秋千框架和最佳实践 旋启式框架和最佳实践 主题。 你好, 多年来,我一直在编写Swing应用程序,很多人都觉得它很优
问题内容: 应用程序上下文和Web应用程序上下文之间有什么区别? 我知道用于Spring MVC架构的应用程序吗? 我想知道应用程序中有什么用途?什么样的豆类被定义? 问题答案: Web应用程序上下文扩展了应用程序上下文,该上下文旨在与标准javax.servlet.ServletContext一起使用,因此能够与容器进行通信。 如果WebBean中实现ServletContextAware接口,
问题内容: 两者都意味着空间,但是有什么区别吗? 问题答案: 一个是不间断空间,另一个是常规空间。不间断的空格表示该行不应在该点处换行,就像它不会在一个单词的中间换行一样。 此外,正如斯文德(Svend)在其评论中指出的那样,不间断的空间不会崩溃。
本文向大家介绍<%# %> 和 <% %> 有什么区别?相关面试题,主要包含被问及<%# %> 和 <% %> 有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 答:<%# %>表示绑定的数据源 <%%>是服务器端代码块