Android,MVP模式
梗概
MVP模式是MVC模式在Android上的一种变体,在MVC模式中,Activity应该是属于View这一层,它既承担了View,同时也包含了一些Controller的东西在里面,这对于开发与维护来说不太友好,耦合度太高。把Activity的View和Controller抽离出来就变成了View和Presenter,这就是MVP模式。
先熟悉一下MVC模式
M层:适合做一些业务逻辑处理,比如数据库存取操作,网络操作,复杂的算法,耗时的任务等都在model层处理。
V层:应用层中处理数据显示的部分,XML布局可以视为V层,显示Model层的数据结果。
C层:在Android中,Activity处理用户交互问题,因此可以认为Activity是控制器,Activity读取V视图层的数据(eg.读取当前EditText控件的数据),控制用户输入(eg.EditText控件数据的输入),并向Model发送数据请求(eg.发起网络请求等)。
举个例子大家可能比较好理解:实现的是一个天气查询功能,在页面EditText上输入城市名称,点击Button调用天气API,返回的天气数据显示在TextView里面。例子中显示的EditText、Button、TextView都属于View层,例子中实现向API请求数据的是Model层,Controller层就是其中的Activity,监听View中的点击事件,然后向Model层(可能是数据库、网络、算法、任务等)请求数据,回调之后再在View中显示。
为什么用MVP架构
我们平常开发中的Activity、XML界面加起来就已经相当于一个MVC的架构模式,这种开发方式的缺点就是业务量大的时候,一个Acitvity分分钟飙到上千行代码,想要改一处业务逻辑光是去找就要费半天劲,而且有点地方逻辑处理是一样的无奈是不同的 Activity 就没办法很好的写成通用方法。
MVP 模式将Activity 中的业务逻辑全部分离出来,让Activity 只做 UI 逻辑的处理,所有跟Android API无关的业务逻辑由 Presenter 层来完成。将业务处理分离出来后最明显的好处就是管理方便,但是缺点就是增加了代码量。Persenter的中文翻译是“主持人”。