美文网首页
Android Mvp核心精神的简单示例

Android Mvp核心精神的简单示例

作者: 微风细雨007 | 来源:发表于2018-04-08 18:16 被阅读59次

MVP架构定义

简称:MVP 全称:Model-View-Presenter ;MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。

使用原因

面对几千行的Activity代码,我选择狗带!!!

官方github项目地址
分析官方用法

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中写几千行代码啦!!!

相关文章

网友评论

      本文标题:Android Mvp核心精神的简单示例

      本文链接:https://www.haomeiwen.com/subject/imcmhftx.html