MVP模式)

声明:百科词条人人可编纂,词条建立和点窜均免费,毫不具有官方及代办署理商付费代编,请勿上当被骗。详情

mvp的全称为Model-View-Presenter,View担任显示,Controller/Presenter担任逻辑的处置。MVP与MVC有着一个严重的区别:在MVP中View并不间接利用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会间接从Model中读取数据而不是通过 Controller。

在MVC里,View是能够间接拜候Model的!从而,View里会包含Model消息,不成避免的还要包罗一些营业逻辑。 在MVC模子里,更关心的Model的不变,而同时有多个对Model的分歧显示,及View。所以,在MVC模子里,Model不依赖于View,可是View是依赖于Model的。不只如斯,由于有一些营业逻辑在View里实现了,导致要更改View也是比力坚苦的,至多那些营业逻辑是无法重用的。

在MVP里,Presenter完全把Model和View进行了分手,次要的法式逻辑在Presenter里实现。并且,Presenter与具体的View是没有间接联系关系的,而是通过定义好的接口进行交互,从而使得在变动View时候能够连结Presenter的不变,即重用! 不只如斯,我们还能够编写测试用的View,模仿用户的各类操作,从而实现对Presenter的测试–而不需要利用主动化的测试东西。 我们以至能够在Model和View都没有完成时候,就能够通过编写Mock Object(即实现了Model和View的接口,但没有具体的内容的)来测试Presenter的逻辑。 在MVP里,使用法式的逻辑次要在Presenter来实现,此中的View是很薄的一层。因而就有人提出了Presenter First的设想模式,就是按照User Story来起首设想和开辟Presenter。在这个过程中,View是很简单的,可以或许把消息显示清晰就能够了。在后面,按照需要再随便更改View,而对Presenter没有任何的影响了。 若是要实现的UI比力复杂,并且相关的显示逻辑还跟Model相关系,就能够在View和Presenter之间放置一个Adapter。由这个 Adapter来拜候Model和View,避免两者之间的联系关系。而同时,由于Adapter实现了View的接口,从而能够包管与Presenter之间接口的不变。如许就能够包管View和Presenter之间接口的简练,又不得到UI的矫捷性。 在MVP模式里,用户输入和设置界面显示的内容,除此就不应当有更多的内容,毫不容许间接拜候Model–这就是与MVC很大的分歧之处。

2、能够更高效地利用模子,由于所有的交互都发生在一个处所——Presenter内部

3、我们能够将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特征很是的有用,由于视图的变化老是比模子的变化屡次。

4、若是我们把逻辑放在Presenter中,那么我们就能够离开用户接口来测试这些逻辑(单位测试)

因为对视图的衬着放在了Presenter中,所以视图和Presenter的交互会过于屡次。还有一点需要大白,若是Presenter过多地衬着了视图,往往会使得它与特定的视图的联系过于慎密。一旦视图需要变动,那么Presenter也需要变动了。好比说,本来用来呈现Html的Presenter此刻也需要用于呈现Pdf了,那么Presenter很有可能也需要变动。

更多精彩报道,尽在https://www.syisy.com

发表评论

电子邮件地址不会被公开。 必填项已用*标注