MVP架构定义
简称:MVP 全称:Model-View-Presenter ;MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。
使用原因
面对几千行的Activity代码,我选择狗带!!!
Model | Presenter | View |
---|---|---|
数据 | 业务处理 | 显示 |
实体类/数据库 | 某Presenter类 | 实现某View的Activity |
简单使用
需求,点击首页button,显示输入文字。如果用MVC写法将会非常简单,但我就要用MVP,嗯哼
零 创建实体类
data class Name(val name: String, val hobby: String)
一 创建View接口
interface MainView {
fun result(inputName: Name)
}
二 创建Present类
创建了MainView 稍后会在Activity中赋值
class MainPresent<T : MainView> {
lateinit var mView: T
fun show(name: String, hobby: String) {
val uName = Name(name, hobby)
mView.result(uName)
}
}
三 Activity的实现
实现了MainView接口,初始化Presenter需要:1.实例化,2.赋值MainView
class MainActivity : AppCompatActivity(), MainView {
override fun result(inputName: Name) {
toast(inputName.name + "——————" + inputName.hobby)
}
/**
* 创建Present
*/
lateinit var present: MainPresent<MainView>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
initPresent()
initView()
}
/**
* 初始化Present
*/
private fun initPresent() {
present = MainPresent()
present.mView = this
}
private fun initView() {
mButton.setOnClickListener {
val name = mName.text.toString()
val hobby = mHobby.text.toString()
present.show(name, hobby)
}
}
}
总结:解耦和,可扩展,逻辑清晰,再也不用在Activity中写几千行代码啦!!!