MVC
Model-View-Controller (MVC) 体系结构模式将应用程序分成 3 个主要组件组:模型、视图和控制器。
Model: 不依赖用户界面,直接管理数据,逻辑和应用的规则。管理应用的数据,从controller接收用户的输入。
View:一切信息的输出显示都能被称为View,比如图表;同一信息可能有多个Views,比如表格等。以特定的形式显示Model。
Controller:接收输入并且转换为命令给model或者view。响应用户的输入,传递给Model。
但是在android里,用户的控制事件(如点击,滑动等)是在View中的,所以android中MVC如下图所示:
android mvc.png
基本的结构是activity/fragment持有Model和Controller的实例,并且注册回调到Model层用来更新View;Controller的实例持有Model的实例用来传递用户请求。
优点:
- 同步开发,多个程序员可以同时开发View/Model/Controller。
- 高内聚,所有逻辑相关的都放在Controller里面,特定模块的Views也都在一起。
- 低耦合,MVC本质上就是为了分开View、Model、Controller。
- 易于修改,因为各层的职责独立,所以易于扩展和修改。
- 一个Model可以有多个View。
缺点:
- 代码导航性复杂,因为引入了新的抽象层,要求使用者能使用MVC的分解标准。
MVP
Model-View-Presenter 是从MVC衍生出来的。在MVP中,presenter的作为一个“中间人”,所有的显示逻辑都放在presenter中。
MVP更好的帮助单元测试,并且促进了现实逻辑的关键点分离。
Model_View_Presenter_GUI_Design_Pattern
Model:会被显示在界面上的数据。
View:被动的界面,来显示数据(medel)并且分发用户操作给presenter来处理数据。
Presenter: 处理Model 和View,从Model获取数据,在View中显示。
MVVM
Model-View-ViewModel
Model:数据访问层
View:如同MVC MVP一样,显示界面
ViewModel:暴露View的一些属性和行为的抽象,用来代替Controller和Presenter。在ViewModel中建立View和Model中数据的绑定。
Binder:隐式存在于MVVM模式中,让View和数据更好的的同步,简化了繁琐的代码。
网友评论