学习目标:
学习MVP基本概念,可以自行搭建契约类MVP。
学习由基础契约类MVP一步步升级至高度封装的MVP。
学习内容:
在我本人工作的这段时间MVP陆陆续续在使用,可是在使用过程中发现MVP在中小型公司中处于一个比较尴尬的位置,项目开始的时候使用MVP感觉还可以,
随着业务扩展以及同事更替导致项目质量直线下降,这和MVP模式下n多P层不无关系,在这里将我之前在工作时使用的MVP给大家讲解一下,
以及自己对之前MVP进行的封装进行讲解,加深自己的理解并发现问题
首先我们先理解什么是契约类MVP
如图,这是一个登录操作的MVP进行的流程图,接下来我们看代码如何实现
class LoginActivity : AppCompatActivity(), LoginContract.LoginView<LoginContract.LoginPresenter> {
var loginPresenter: LoginContract.LoginPresenter? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
LoginPresenterImpl(this)
text_v.setOnClickListener { loginPresenter?.login("Android", "123456") }
}
override fun setPresenter(t: LoginContract.LoginPresenter) {
loginPresenter = t
}
override fun upData(str: String?) {
text_v.text = str
}
}
interface BaseView<T> {
fun setPresenter(t: T)
}
interface BasePresenter {
}
interface BaseModel {
}
interface LoginContract {
interface LoginPresenter : BasePresenter {
fun login(userName: String?, pwd: String?)
}
interface LoginView<LoginPresenter> : BaseView<LoginPresenter> {
fun upData(str: String?)
}
}
class LoginModelImpl : BaseModel {
fun login(callBack: CallBack) {
callBack.onSuccess("登录成功")