志在指尖
用双手敲打未来

Android之MVC、MVP、MVVM

MVC全名是ModelViewController,是软件工程中的一种软件架构形式,把软件系统分为三个基本部分:模型(Model)、视图(View)和操控器(Controller)。
Model(模型)是运用程序中用于处理运用程序数据逻辑的部分。一般模型对象负责在数据库中存取数据。模型表明企业数据和事务规则。在MVC的三个部件中,模型具有最多的处理任务。例如它或许用像EJBs和ColdFusionComponents这样的构件对象来处理数据库,被模型回来的数据是中立的,便是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于运用于模型的代码只需写一次就能够被多个视图重用,所以减少了代码的重复性。
View(视图)是运用程序中处理数据显现的部分。一般视图是依据模型数据创建的。视图是用户看到并与之交互的界面。MVC好处是它能为运用程序处理许多不同的视图。在视图中其实没有真正的处理发作,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它仅仅作为一种输出数据并答运用户操纵的办法。
Controller(操控器)是运用程序中处理用户交互的部分。一般操控器负责从视图读取数据,操控用户输入,并向模型发送数据。操控器承受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,操控器自身不输出任何东西和做任何处理。它仅仅接收请求并决议调用哪个模型构件去处理请求,然后再确定用哪个视图来显现回来的数据。Android
MVC是一种软件设计模范,用一种事务逻辑和数据显现别离的办法安排代码,将事务逻辑聚集到一个部件里边,在界面和用户围绕数据的交互能被改善和个性化定制的一起而不需要从头编写事务逻辑。
MVC特色:
MVC形式的特色在于完成关注点别离,即运用程序中的数据模型与事务和展现逻辑解耦。在客户端web开发中,便是将模型(M-数据、操作数据)、视图(V-显现数据的HTML元素)之间完成代码别离,松懈耦合,使之成为一个更容易开发、保护和测验的客户端运用程序。
View传送指令到Controller;
Controller完成事务逻辑后,要求Model改动状况;
Model将新的数据发送到View,用户得到反馈。
MVC流程:
MVC流程一共有两种,在日常开发中都会运用到。
一种是通过View承受指令,传递给Controller,然后对模型进行修正或许查找底层数据,最终把改动渲染在视图上。
另一种是通过controller承受指令,传给Controller:
MVC长处:
耦合性低,视图层和事务层别离,这样就答应更改视图层代码而不用从头编译模型和操控器代码。
重用性高
生命周期成本低
MVC使开发和保护用户接口的技术含量下降
可保护性高,别离视图层和事务逻辑层也使得WEB运用更易于保护和修正
布置快
MVC缺陷:
不适合小型,中等规划的运用程序,花费大量时刻将MVC运用到规划并不是很大的运用程序一般会得不偿失。
视图与操控器间过于严密连接,视图与操控器是相互别离,但却是联络严密的部件,视图没有操控器的存在,其运用是很有限的,反之亦然,这样就阻碍了他们的独立重用。
视图对模型数据的低效率拜访,依据模型操作接口的不同,视图或许需要多次调用才干获得满足的显现数据。对未改变数据的不必要的频频拜访,也将危害操作性能。
MVC运用:
在webapp盛行之初,MVC就运用在了java(struts2)和C#(ASP.NET)服务端运用中,后来在客户端运用程序中,基于MVC形式,AngularJS应运而生。
MVP
MVP(Model-View-Presenter)是MVC的改良形式,由IBM的子公司Taligent提出。和MVC的相同之处在于:Presenter负责事务逻辑,Model办理数据,View负责显现,一起改动了通讯方向。
MVP特色:
M、V、P之间双向通讯。
View与Model不通讯,都通过Presenter传递。Presenter彻底把Model和View进行了别离,主要的程序逻辑在Presenter里完成。
View十分薄,不布置任何事务逻辑,称为”被动视图”(PassiveView),即没有任何主动性,而Presenter十分厚,所有逻辑都布置在那里。
Presenter与详细的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在改变View时候能够坚持Presenter的不变,这样就能够重用。不仅如此,还能够编写测验用的View,模仿用户的各种操作,从而完成对Presenter的测验–从而不需要运用自动化的测验东西。
MVP长处:
模型与视图彻底别离,咱们能够修正视图而不影响模型;
能够更高效地运用模型,因为所有的交互都发作在一个当地——Presenter内部;
咱们能够将一个Presenter用于多个视图,而不需要改动Presenter的逻辑。这个特性十分的有用,因为视图的改变总是比模型的改变频频;
如果咱们把逻辑放在Presenter中,那么咱们就能够脱离用户接口来测验这些逻辑(单元测验)。
MVP缺陷:
视图和Presenter的交互会过于频频,使得他们的联络过于严密。也便是说,一旦视图改变了,presenter也要改变。
MVP运用:
可运用与Android开发。
MVVM
MVVM是Model-View-ViewModel的简写。微软的WPF(WindowsPresentationFoundation–微软推出的基于Windows的用户界面结构)带来了新的技术体会,使得软件UI层更加细节化、可定制化。与此一起,在技术层面,WPF也带来了比如Binding(绑定)、DependencyProperty(依赖属性)、RoutedEvents(路由事情)、Command(命令)、DataTemplate(数据模板)、ControlTemplate(操控模板)等新特性。MVVM形式其实是MV形式与WPF结合的运用办法时发展演变过来的一种新型架构形式。它立足于原有MVP结构并且把WPF的新特性糅合进去,以应对客户日益复杂的需求改变。
MVVM长处:
MVVM形式和MVC形式相似,主要意图是别离视图(View)和模型(Model),有几大长处:
低耦合,视图(View)能够独立于Model改变和修正,一个ViewModel能够绑定到不同的”View”上,当View改变的时候Model能够不变,当Model改变的时候View也能够不变。
可重用性,能够把一些视图逻辑放在一个ViewModel里边,让许多view重用这段视图逻辑。
独立开发,开发人员能够专心于事务逻辑和数据的开发(ViewModel),设计人员能够专心于页面设计,运用ExpressionBlend能够很容易设计界面并生成xml代码。
可测验,界面向来是比较难于测验的,而现在测验能够针对ViewModel来写。

未经允许不得转载:IT技术网站 » Android之MVC、MVP、MVVM
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

志在指尖 用双手敲打未来

登录/注册IT技术大全

热门IT技术

C#基础入门   SQL server数据库   系统SEO学习教程   WordPress小技巧   WordPress插件   脚本与源码下载