MVC
Model-View-Controller (MVC) 体系结构模式将应用程序分成 3 个主要组件组:模型、视图和控制器。
Model: 不依赖用户界面,直接管理数据,逻辑和应用的规则。管理应用的数据,从controller接收用户的输入。 View:一切信息的输出显示都能被称为View,比如图表;同一信息可能有多个Views,比如表格等。以特定的形式显示Model。 Controller:接收输入并且转换为命令给model或者view。响应用户的输入,传递给Model。
模块之间的依赖关系如下图所示,即Model是完全独立于View和Controller的
但是在android里,用户的控制事件(如点击,滑动等)是在View中的,所以android中MVC如下图所示:
优点:
- 同步开发,多个程序员可以同时开发View/Model/Controller。
- 高内聚,所有逻辑相关的都放在Controller里面,特定模块的Views也都在一起。
- 低耦合,MVC本质上就是为了分开View、Model、Controller。
- 易于修改,因为各层的职责独立,所以易于扩展和修改。
- 一个Model可以有多个View。
缺点:
- 代码导航性复杂,因为引入了新的抽象层,要求使用者能使用MVC的分解标准。
MVP
Model-View-Presenter 是从MVC衍生出来的。在MVP中,presenter的作为一个“中间人”,所有的显示逻辑都放在presenter中。 MVP更好的帮助单元测试,并且促进了现实逻辑的关键点分离。
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和数据更好的的同步,简化了繁琐的代码。