首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果"Presenter"在"视图"上设置属性是否违反了MVP模式?

在MVP模式中,Presenter是负责处理应用程序的业务逻辑和数据处理的组件,而视图(View)则负责显示数据和接收用户输入。因此,如果Presenter在视图上设置属性,可能会违反MVP模式的原则。

在MVP模式中,视图(View)和模型(Model)之间不应该直接通信,而是通过Presenter进行交互。因此,如果Presenter在视图上设置属性,可能会导致视图和模型之间的通信绕过了Presenter,从而违反了MVP模式的原则。

为了避免这种情况,可以考虑在Presenter中定义接口,让视图实现这些接口,然后Presenter通过这些接口与视图进行交互。这样,视图和模型之间的通信就不会绕过Presenter,从而遵循了MVP模式的原则。

总之,如果Presenter在视图上设置属性,可能会违反MVP模式的原则。为了遵循MVP模式的原则,可以考虑在Presenter中定义接口,让视图实现这些接口,然后Presenter通过这些接口与视图进行交互。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于Android中MVVM,MVC和MVVM的那些事

MVVM是原有领域Model的基础添加一个ViewModel,这个ViewModel除了正常的属性意外,还包括一些供View显示用的属性。...例如在经典的MVP中,view有一个属性ischeck,需要在presenter设置view的ischeck值。...但是MVVM中的presenter也会有一个ischeck属性来同步view的ischeck属性,可能会用到observer模式同步ischeck的值。...这种模式实际是框架替应用开发者做了一些工作,开发者只需要较少的代码就能实现比较复杂的交互。...个人理解,广义地谈论MVC架构时,并非指本文中严格定义的MVC,而是指的MV*,也就是视图和模型的分离,只要一个框架提供了视图和模型分离的功能,我们就可以认为它是一个MVC框架。

2K30

创建可维护和可测试的 Windows 窗体应用程序的 10 种方法(译)

用用户控件隔离你的用户界面 首先,避免一个表单放置太多控件。通常,你的应用程序的主要形式可以分解为逻辑区域(我们可以称之为“视图”)。...用接口创建被动视图 一种特别有用的技术是使你创建的每个窗体和用户控件都实现一个视图接口。此接口应包含允许设置和检索视图中控件的状态和内容的属性。...这是称为“模型视图演示者”或 MVP模式模型视图展示器中,你的视图是完全被动的,展示器会指示视图显示哪些数据。还允许视图与演示者通信。...如果你遵循 MVP 模式,你的应用程序中的所有业务逻辑都可以轻松测试,因为它位于 Presenter 或其他非 UI 类中。 5. 为错误报告创建服务 通常,你的演示者类需要显示错误消息。...如果你开始使用 MVP、事件聚合器和命令模式模式构建应用程序,你会发现随着它们变得越来越大,维护起来会少很多痛苦。你还可以对所有业务逻辑进行单元测试,这对于持续的可维护性至关重要。

1.3K10
  • MVC, MVP, MVVM比较以及区别

    为了实现这种机制,那些用于监视此模型的视图必须事先在此模型注册,从而,视图可以了解在数据模型发生的改变。 View 视图层负责数据的展示。 视图中一般没有程序的逻辑。...相对这点,MVP和MVVM就要好得多。它们都独立出了Presenter 和ViewModel来对应每个View。 四、MVP模式 MVP模式也是一种经典的界面模式。...4.5 MVP模式总结 MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑Presenter里实现。...4、如果我们把逻辑放在Presenter中,那么我们就可以脱离用户界面来测试这些逻辑(单元测试) 五, MVVM模式 5.1 MVVM模式的设计思想 MVVM模式中,一个ViewModel和一个View...六, MVC, MVP和MVVM模式使用场景总结 由于winform中无法像WPF一样,支持数据和界面的双向绑定以及事件的监控,所以,winform中MVP是最佳选择。

    2.6K100

    iOS架构设计:揭秘MVC, MVP, MVVM以及VIPER

    iOS中使用MVC时感觉怪怪的?对切换到MVVM有疑虑?听说过VIPER,但不知道是否值得? 往下看,你将会找到这些问题的答案,如果还有疑问,请在评论区留言。...如果你不愿意在项目的架构投入太多的时间,那么Cocoa MVC 就是你应该选择的模式。而且你会发现用其他维护成本较高的模式开发小的应用是一个致命的错误。...是的,它的名字是MVP(Passive View variant,被动视图变体)。等等...这是不是意味着苹果的MVC实际MVP?不,不是这样。...MVP中,UIViewController的子类实际是Views而不是Presenters。...易用性 — 我们例子中的代码量和MVP的差不多,但是实际开发中,我们必须把View中的事件指向Presenter并且手动的来更新View,如果使用绑定的话,MVVM代码量将会小的多。

    1.4K20

    iOS 面试策略之经验之谈-架构的选择

    试想如果所有代码都集中一个 UIViewController 中,App 理论确实能够运行,然而当调试时面对拥有庞大代码的单个文件,我们需要花大量的时间去找到发生问题的源头。...MVP 的中间层 Presenter 持有模型,更新模型与 MVC 的 Controller 角色一样。...MVVM 的中间层 View Model 持有模型,更新模型与前两者相同。它完全独立于视图视图拥有中间层,通过绑定属性,自动进行更新。全部操作由响应式逻辑框架自动完成。...MVVM 响应和更新通过响应式框架自动操作,大大精简了代码量;但是需要引入第三方响应式框架,同时因为属性观察环环相扣,调用栈很大,debug 起来尤为痛苦。...与 MVPPresenter 或是 MVVM 的 ViewModel 功能类似,更像 Presenter 还是 ViewModel,取决于是否引入响应式编程框架。

    1K30

    关于 MVVM和MVC的这些,你知道吗?

    --Josh Smith[^3] 如果你把10个软件架构师放在一个房间里,让他们讨论模型-视图-控制器模式是什么,你最终会得到12种不同的观点。...MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。...为了解决MVC框架中View和Model联系紧密的问题,开发者研究开发了MVP模式MVP即Model-View-Presenter,即把MVC中的Controller换成了Presenter,目的就是为了完全切断...View跟Model之间的联系,MVP模式中,View负责视图的显示,Model负责提供数据,Presenter则主要负责逻辑业务的处理。...MVP框架中,View无法直接再与Model交互,View和Model之间的通信都是通过Presenter进行完成的,所有的交互都在Presenter内部发生,即由Presenter充当了View和Model

    78500

    JavaScript 设计模式学习第二十六篇- MVC、MVP、MVVM 模式

    在下文中,如果某些内容和你看的某本书或者某个帖子的不一样,不要惊慌,多看几本书,多打开几个帖子,你会发现每个都不一样,所以模式具体是如何表现并不重要,重要的是,了解这三个模式主要的目的和思想是什么:...MVP 模式 MVC 基础上进一步解耦,视图层和模型层完全隔离,交互只能通过管理层来进行,问题是更新视图需要管理层手动来进行; 3....由此,MVP 模式应运而生 。 2. MVP (Model View PresenterMVP 模式将程序分为三个部分:模型(Model)、视图(View)、管理层(Presenter)。...,为了解决这个问题,MVP 模式将 View 层和 Model 层解耦,之间的交互只能通过 Presenter 层,实际MVP 模式的目的就是将 View 层和 Model 层完全解耦,使得对 View...对简单 UI 来说,实现 MVVM 模式的开销是不必要的,而对于大型应用来说,引入 MVVM 模式则会节约大量手动更新视图的复杂过程,是否使用,还是看使用场景。

    68310

    使用ASP.NET实现Model View Presenter(MVP)

    Model-View-Presenter Model-View-Presenter (MVP) 模式是 Model-View-Controller (MVC) 模式的变种,针对事件模型,像ASP.NET...关于 MVC 和 MVP的深入比较,请查看 http://www.darronschall.com/weblog/archives/000113.cfm.,接下来以三个例子详细说明MVP模式。...最后,Presenter调用InitView()方法,这个方法将获取当前的时间并通过公开的属性ICurrentTimeView传递给视图(View),单元测试断言CurrentTime的值应比它的初始值大...的Set;但是设置了一个Get,用于单元测试中获取视图的CurrentTime,它也可以添加到MockCurrentTimeView而不要在接口中定义,这样,视图接口中暴露的接口属性不需要定义getter...同一页面中没有使用用户控件管理不同的功能性区段,很快就会出现维护困难的问题。 MVP的事件处理 上面的例子,本质描述的是一个Presenter同它的View之间的单向的通信。

    1.1K80

    Android UI 架构演进:从 MVC 到 MVP、MVVM、MVI

    实现细节,View 和 Presenter 中间会定义一个协议接口 Contract,这个接口会约定 View 如何向 Presenter 发指令和 Presenter 如何 Callback 给...View 的概念相同; Model: 负责管理业务数据逻辑,如网络请求、数据库处理,与 MVP 中 Model 的概念相同; ViewModel: 存储视图状态,负责处理表现逻辑,并将数据设置给可观察数据容器...实现细节,View 和 Presenter 从双向依赖变成 View 可以向 ViewModel 发指令,但 ViewModel 不会直接向 View 回调,而是让 View 通过观察者的模式去监听数据的变化...实现细节,View 和 ViewModel 之间的多个交互(多 LiveData 数据流)变成了单数据流。...这个 “别人” MVP 里叫作 Presenter MVVM 里叫作 ViewModel。而不论是 MVP 中的约定接口,还是 ViewModel 里的观察者模式,这些都是实现的细节而已。

    1.2K10

    表现层设计模式

    视图会观察模型的变化并更新。 SC模式把一部分UI处理逻辑放到视图层,例如显示样式等。 2)PV: Presenter: 响应用户事件,更新视图,负责UI处理逻辑,包括UI的呈现样式等。...视图视图是UI元素的集合,UI元素绑定到模型属性。用户触发的事件都将发送给展示器。 模型更新后,展示器控制视图更新。 视图持有对展示器的引用,模型通过展示器暴露给视图视图不会暴露出任何接口。...3 PM模式 在给出正式的PM模式之前,给出一个不标准的PM例子。 PM模式中强调UI控件绑定到模型属性,但下面的例子,有点违背这一定义。...UI 2)模型不含有方法,只有属性 3)视图层包含了一部分UI呈现逻辑,展示器没有将其完全包含,这样做的好处和MVP-SC模式是一样的。...模型中的属性绝大部分都可简单地绑定到视图层控件。 2)关于展示器。

    1.8K40

    安卓MVP框架的简介与搭建

    一、基本概念 MVP是Model-View-Presenter的简称,即模型-视图-表现层的缩写。MVP是由MVP模式进化而来的,MVP改进了MVC中的控制器过于臃肿的问题。...二、MVP与MVC的比较(以Android开发为例) MVP模式是MVC模式Android的一种变体,要介绍MVP就得先介绍MVC。MVC模式中,Activity应该是属于View这一层。...等 Presenter 负责完成view与model的交互,处理程序逻辑 MVP模式是MVC模式Android的一种变体,要介绍MVP就得先介绍MVC。...MVP作为一个新的模式,与MVC有一个重大的区别:MVP中View并不直接使用Model,它们之间的通信是通过Presenter来进行的,所有的交互都发生在Presenter内部;而在MVC中View...如果Presenter过多地操作视图,往往会使得它与特定的 View联系过于紧密。一旦视图需要改变,那么Presenter也需要改变。

    1.6K10

    Android中MVP模式讲解及实践

    什么是MVP模式?...layout制定相应的布局文件,然后显示Activity,用于显示天气信息。这对应于View层,这里的View并不是Android中开发中的组件view而是对视图的统称....M(Model) 数据相关层 V(View) 视图层,如Activity的布局 P(Presenter) 纽带层,用来连接Model与View. MVP开发在Android中的基本流程 1....我们可以模拟View和Model的数据来测试Presenter的逻辑。 MVP实战 现在的公司项目中,我已经用上了MVP模式开发。但是在这里,我不想照搬代码。...代码开发 因为选定MVP模式,所以第一步就是包的组织。 ? View层的接口定义及实现 MVP中Activity用来专注视图的表现。 而在本例子中View的表现有哪些呢?

    2.7K30

    聊聊iOS中的 MVC、MVP、MVVM以及 VIPER等代码组织方式

    但是现实中我们的View依然跟Model耦合,因为如果完全按照这个理想化的MVC的话,View(cell)层的设置都应该在 Controller中,这样的话,Controller会更臃肿。... MVP 中,Presenter 可以理解为松散的控制器,其中包含了视图的 UI 业务逻辑, 所有从视图发出的事件,都会通过代理给 Presenter 进行处理; 同时,Presenter 也通过视图暴露的接口与其进行通信...Apple 的 MVC 实际MVP 吗?...作为一种新的模式MVP与MVC有着一个重大的区别:MVP中View并不直接使用Model, 它们之间的通信是通过 Presenter (MVC中的Controller)来进行的,所有的交互都发生在...MVVM和MVP的关系 而 MVVM 模式Presenter 改名为 ViewModel,基本MVP 模式完全一致。

    4.2K21

    关于 MVVM和MVC的一些总结

    --Josh Smith 如果你把10个软件架构师放在一个房间里,让他们讨论模型-视图-控制器模式是什么,你最终会得到12种不同的观点。...为了解决MVC框架中View和Model联系紧密的问题,开发者研究开发了MVP模式MVP即Model-View-Presenter,即把MVC中的Controller换成了Presenter,目的就是为了完全切断...View跟Model之间的联系,MVP模式中,View负责视图的显示,Model负责提供数据,Presenter则主要负责逻辑业务的处理。...MVP框架中,View无法直接再与Model交互,View和Model之间的通信都是通过Presenter进行完成的,所有的交互都在Presenter内部发生,即由Presenter充当了View和Model...(angular.js): angular.js 是通过脏值检测的方式比对数据是否有变更,来决定是否更新视图,最简单的方式就是通过 setInterval() 定时轮询检测数据变动,angular只有指定的事件触发时进入脏值检测

    2.6K30

    MVPMVCMVVM

    MVP 中,Presenter 可以理解为松散的控制器,其中包含了视图的 UI 业务逻辑,所有从视图发出的事件,都会通过代理给 Presenter 进行处理;同时,Presenter 也通过视图暴露的接口与其进行通信...缺点: 由于对视图的渲染放在了Presenter中,所以视图Presenter的交互会过于频繁。如果Presenter过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密。...MVVM 1.MVVM是由MVP进化而来,MVVM模式基本MVP相同,只是把MVP中的P变成了VM,即ViewModel, 2.MVVM中的数据可以实现双向绑定,即View层数据变化则ViewModel...暴露属性与View元素显示内容或者元素状态一一对应。一般情况下ViewModel暴露的属性建议是readOnly的,至于为什么,我们实战中会去解释。...可惜MVVM这几个英文单词中并没有它的一席之地,它的最主要作用是View和ViewModel之间做了双向数据绑定。如果MVVM没有Binder,那么它与MVC的差异不是很大。

    48620

    MVP模式

    MVP模式 MVC即模型Model、视图View、管理器PresenterMVP模式从MVC模式演变而来,通过管理器将视图与模型巧妙地分开,即将Controller改名为Presenter,同时改变了通信方向...,MVP模式模式不属于一般定义的23种设计模式的范畴,而通常将其看作广义的架构型设计模式。...描述 MVC里View是可以直接访问Model中数据的,但MVP中的View并不能直接使用Model,而是通过为Presenter提供接口,让Presenter去更新Model,再通过观察者模式等方式更新...View Controller Model 实现 在这里我们主要是示例MVP的分层结构,如果要实现MVP信息传递就需要进行一些指令与事件的解析等,Presenter作为View和Model...进行++后再Render到视图中,此外由于没有数据绑定,如果Presenter视图渲染的需求增多,其不得不过多关注特定的视图,一旦视图需求发生改变Presenter也需要改动。

    52110

    软考高级架构师:MVC 架构MVP 架构 MVVM 架构区别

    视图(View) C. 控制器(Controller) D. 表示器(Presenter MVP 架构模式中,哪个部分是作为视图(View)和模型(Model)之间的中介? A....所有模式视图都直接与模型大量交互 MVP 模式中,表示器(Presenter)的主要职责是什么? A. 管理数据存储 B. 处理业务逻辑,并更新视图 C.... MVP 架构模式中,表示器(Presenter)作为视图(View)和模型(Model)之间的中介,负责处理业务逻辑并更新视图。 答案为 B。... MVP 架构模式中,由于表示器(Presenter)充当了视图(View)和模型(Model)之间的中介,视图与模型之间的直接交互最少。 答案为 B。... MVP 模式中,表示器(Presenter)的主要职责是处理业务逻辑,并根据逻辑处理的结果更新视图,它作为视图和模型之间的桥梁。 答案为 A。

    14500

    Thinking In Design Pattern——MVP模式演绎

    Model-View-Presenter(模型-视图-呈现器,MVP)模式的重点是让Presenter控制整个表示层的逻辑流。...MVP模式由如下三个不同部分组成: 模型表示视图显示或者修改的业务数据,包括业务逻辑和领域相关的逻辑。 视图通过呈现器显示模型数据,并将用户输入委托给呈现器。...了解了MVP设计模式后,我以一个简单的例子阐述MVP模式企业级架构中的应用,如下图给出了企业级分层设计的ASP.NET应用程序的典型体系结构(实际还要更复杂些): ?...View & Presenter 切换Presenter项目中,添加IHomeView接口,这个接口定义了电子商务网页的视图首页显示商品目录以及最畅销的商品: public interface IHomeView...MVP通过将将主要的逻辑局限于Presenter,是它们具有更好的可测试性。至于并行开发,个人觉得真正的开发中,意义到不是很大,现在开发这大多是多面手,呵!

    817100

    Android架构(一)MVP全解析

    1.回顾MVC 讲到MVP前我们有必要回顾下MVC,MVC(Model-View-Controller,模型-视图-控制器)模式是80年代Smalltalk-80出现的一种软件设计模式,后来得到了广泛的应用...Presenter需要通过Model层来存储、获取数据。 View 负责处理用户事件和视图部分的展示。Android中,它可能是Activity、Fragment类或者是某个View控件。 ?...MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑Presenter里实现。...如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)。 缺点 额外的代码复杂度及学习成本。...如果Presenter过多地与特定的视图的联系过于紧密,一旦视图需要变更,那么Presenter也需要变更了。

    941100
    领券