简介
MVP( Model-View-Presenter),直译过来的意思就是模型-视图-表示器,MVP是一种构架模式。在开发一个Android App模块时 普遍都会涉及到数据获取,逻辑处理,界面展示这三个步骤,而这三个步骤就正对应这MVP的M 、P、V。
作用
软件设计模式存在的意义就是为了将代码规范化,提高代码的可读性、复用性。如果你只是写一个小demo,功能简单,就没必要搞什么设计模式了,只有面对一些复杂多变的中大型软件开发,在开发前期就得选定好设计模式。
在Android开发中,MVP设计模式的作用就是将视图、逻辑、数据层这三个模块离开来。并且通过实现Contarct(协议接口),和使用Java泛型可以做到模块以达到高内聚,低耦合。
使用方法
- 先分别写BaseViewImpl,BasePresenterImpl,BaseModelImpl这三个接口。这里面可以写一些方法比如Destroy,也可以什么都不写。
- 写BaseActivity,BaseActivity里面可以写一些通用的初始化方法。我在这里运用了泛型,BaseActivity是一个泛型类,泛型参数P是继承自BasePresenterImpl。
abstract class BaseActivity<P : BasePresenterImpl> : AppCompatActivity() {
@Nullable
protected val TAG = javaClass.name
protected var presenter :P ? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(layoutId)
initView(savedInstanceState)
presenter = setMyPresenter()
}
abstract fun setMyPresenter() :P?
/**
* 设置layout布局
*/
abstract val layoutId : Int
/**
* 页面初始化
*/
abstract fun initView(savedInstanceState: Bundle?)
override fun onDestroy() {
super.onDestroy()
}
}
3.写BasePresenter,同样泛型参数V继承自BaseViewImpl,M 继承自 BaseModelImpl,并且添加了一个构造函数的参数view
open class BasePresenter<V : BaseViewImpl, M : BaseModelImpl>(protected var view: V?) {
protected var model: M? = null
open fun onDestroy() {
view = null
}
}
- BaseModel,P继承自BasePresenterImpl,构造参数presenter,到这一步我们的MVP构架已经完成,我后续写了一个登录模块的实例,点击查看 登录模块实例
open class BaseModel<P : BasePresenterImpl>(protected var presenter :P?) {
}
总结
恰当的使用设计模式可以带来很多好处,在钻研技术细节时不要忘记整体框架的设计。