参考原文:https://www.jianshu.com/p/bbb3b77d47eb
GoogleMVP机制:https://blog.youkuaiyun.com/jungle_pig/article/details/65626469
1、activity与fragment传值
当activity动态加载fragment时可以通过fragment的setArguments()传入值;
在fragment类中通过fragment的getArguments()方法获得传入的值 ;
MVP结构图:
参考原文:https://blog.youkuaiyun.com/swust_zeng_zhuo_k/article/details/78760947
创建MVP模式是需要经过一下几个步骤:
1、创建IPresenter接口,把所有的业务逻辑的接口搜放在这里,并创建他的实现PresenterImpl,
2、创建IView接口,把所有的视图逻辑的接口都放在这里,其实现类是Activity/Fragment
3、由UML试图可以看出,Activity包含了一个IPresenter,而PresenterImpl包含了IVew并依赖了Model,
Activity只保留了对IPresenter的调用,其他的都放在PresenterImpl中实现,
4、model并不是必须有的,但是一定会有Presenter和View
注意:虚线三角箭头:实现;虚线箭头
:依赖; 实线三角
:关联
Google提出的一种MVP实现方式,步骤:
1.BasePresenter
2.BaseView
两个接口分别作为Presenter和View的基类,仅定义了最基本的方法,具体页面的view和presenter则分别定义继承的接口,添加属于自己页面的方法。
3.Contract 契约类
这是Google MVP与其他实现方式的不同之一,契约类用于定义同一个界面的view和presenter的接口,通过规范的方法命名或注释,可以清晰的看到整个页面的逻辑。
4.具体的Impl类
Fragment实现View接口,这里使用Google推荐的创建Fragment实例的static方法newInstance(),将fragment必备的参数传入。
Presenter实现类,提供一个参数为对应View的构造器,持有View的引用,并调用View的setPresenter()方法,让View也持有Presenter的引用,方便View调用Presenter的方法。
5.最后就是Activity
创建view以及presenter实例,并将二者联系起来。
下图是Google官方Demo:todo-mvp模式的架构图