博文目的:
我从事安卓编程已有三年有余,很早以前就想总结一下各种开发框架,现今将个人理解以博文诉之:
一.MVC
MVC(Model-View-Controller,模型-视图-控制器)模式是80年代Smalltalk-80出现的一种软件设计模式,后来得到了广泛的应用,用一种业务逻辑、数据、界面显示分离的方法组织代码,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
-
模型层(Model)
我们针对业务模型,建立的数据结构和相关的类,可以理解为对数据库或网络得到的数据进行解析,处理等相关操作。 -
视图层(View)
一般采用布局文件(xml)文件或者JAVA代码编写的自定义组件进行界面的描述。。 -
控制层(controller)
android的控制层通常在acitvity、Fragment或者由它们控制的其他业务类中。
android的MVC缺点
在Android开发中,Activity,fragment等一般用于解析布局文件和渲染视图,若都把业务负载其上,会显得代码较为臃肿,不利于查阅代码,大大降低代码的可读性。
二.MVP
MVP(Model View Presenter)MVP的角色定义分别为:
-
Presenter
作为View和Model的沟通的桥梁,它从Model层检索数据后返回给View层,使得View和Model之间没有耦合。 -
Model
主要提供数据的存取功能。Presenter需要通过Model层来存储、获取数据(如往服务端获取数据后解析,或将数据上传到服务端等)。 -
View
负责处理用户事件和视图部分的展示。
优点
- 降低耦合度,实现了Model和View真正的完全分离。
- Presenter可以复用,一个Presenter可以用于多个View,而不需要更改Presenter的逻辑。
- 如果我们把逻辑放在Presenter中,便于程序员测试软件。
缺点
- 如果Presenter与某个特定的View联系较为紧密之时,那样当View发生更改时,对应的Presenter也需要随之更改了。
- 需要写多余代码。