谷歌官方MVP Demo解读
对于MVP不熟悉的同学可以参考一下阮一峰老师关于三种模式的图解 MVC,MVP 和 MVVM 的图示
官方Demo的链接
可以看到谷歌是按照模块分包的,其在tasks为首页的包,下面解读其工作流程。
谷歌的MVP项目中亮点在于:
契约类中会同时声明模块中V和P层的接口并定义好行为,这样的好处在于我们可以一目了然的看到模块中的各个功能。
TasksFragment实现了TasksContract.View接口,在界面可见的时候(OnResume)的时候调用P层的start()方法加载数据。
可以看到在TasksPresenter的构造函数中,会传入两个参数
(@NonNull TasksRepository tasksRepository, @NonNull TasksContract.View tasksView)
其中:tasksRepository就是Model层对象,tasksView就是View层对象。并且会调用方法
mTasksView.setPresenter(this);
将自身传递给View层,这样View就拿到了Presenter的引用。此时也就形成了下面的通信方式:
TasksActivity并没有实现TasksContract.View接口,而是负责创建TasksFragment(View)和TasksPresenter(Presenter)从而将两者联系起来。
Model层会判断获取本地缓存的数据或者是获取远程的数据,这个逻辑是由Model完成的,并通过回调接口回传数据到Presenter。而Presenter只负责什么时候去获取数据就行,而不关心数据的来源。
presenter请求数据
Model获取具体的数据并回传
回调接口
本文地址:
本文发布于:2024-02-02 16:39:20,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170686316145076.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |