最近发现一个国外的学习网站Mindorks,讲到了一些Android常用的技术(MVP、RxJava、Kotlin等),感觉讲的不错,特此搬运过来供大家参考。
此次翻译的是Android MVP Introduction课程,学习该课程需要预先准备的内容有:
Android Studio开发工具,Java基础,泛型
好了,下面开始本课程的学习。
1.简介
什么是MVP架构?
MVP简介
这是一款提供了代码可复用性和易测试性功能的架构。 通过遵循该架构(进行开发),可以让将来的代码更新变的简单起来。当然我们在进行团队协作的时候,为了代码的可读性,也需要遵循(项目中的所用到的其他)任何架构。
为什么选择MVP
如果我们能在Activity中轻松的编写代码,那为什么还要去遵循任何框架?(试想一下)在某个时间点上你的程序正常运行,一切安好,但是如果将来需要更改代码,你要怎么改?如果需要测试,你又要怎么测?一段时间后,你更改了自己之前写的代码,结果看上去是却是一片糟糕。 (对于这些糟糕的代码)其他人和新的团队成员又该怎么去更改代码?
所以说,当进行团队协作时,为了每一个团队成员着想,我们需要轻松地去实现代码的可读性,也需要有效的处理将来的代码更新,使其简单化,而这些操作只能通过遵循一些架构来实现。
因此为了克服这些问题,我们应当遵循MVP架构,把MVP架构作为这些问题的解决方案。
遵循MVP架构进行开发的应用程序被分为三层组件:
Model
View
Presenter
2.组件
Model
它负责处理应用中的数据部分。它不和View进行直接的交互。
它既要从Presenter接收来自View的数据,又要向Presenter提供数据,通过Presenter再把数据转发到View。Model意识不到View,View也意识不到Model(双方不进行直接交互)。
Model被分为不同的部分,在中间部分我们有个datamanager,datamanager作为Model中单独的一部分来和Presenter进行交互,然后datamanager再和Model的其他组件进行进一步的交互。
View
布局的展示效果由它来处理。它的职责是根据Presenter中转发过来的数据去绘制对应的UI界面。因此所有的Activity、Fragment、Dialog和自定义View都属于应用中的View层。
每一个View都持有一个Presenter。
当我们建立View层的基础部分时(指BaseActivity、BaseFragment等,此处以BaseActivity为例),应该至少包含MvpView和BaseActivity两个部分,其中MvpView是一个接口,而BaseActivity则是实现了MvpView接口的类。BaseActivity也可以根据每一个用例,进一步分割成不同的部分。
Presenter
由于Model层和View层不能直接交互,因此由Presenter在二者之间的作为通道。
(Model和View间需要传递的)每条数据都会通过这条通道。它可以通过获取来自Model的数据来更新View,也可以通过View提供的数据来更新Model。
Presenter层的基础部分(指BasePresenter)也应该至少包含两个部分:其一是MvpPresenter接口 ,其二是实现了MvpPresenter 接口的BasePresenter 类。BasePresenter也可以根据每一个用例,进一步分割成不同的部分。