美文网首页
谷歌官方MVP Contract浅解

谷歌官方MVP Contract浅解

作者: RobotStar | 来源:发表于2017-02-17 18:45 被阅读69次

    先上官方源代码:

    Todo-MVP

    可以看到官方MVP代码的包结构,是根据业务来划分,每个包里边都有一个MVP结构。Activity+Fragment相当于View,Presenter用来连接View和Model。

    关于Model,官方例子里的Model是按照数据源分为Local和Remote,常见的Local数据包括Database、File、SharedPreference,Remote就是从网络存取数据。

    官方例子里有个Contract比较有意思,这个接口将V和P放在一起,以及它们所有的方法,先看一下其中一个Contract的源码:

    public interface TaskDetailContract {
        interface View extends BaseView<Presenter> {
            void setLoadingIndicator(boolean active);
            void showMissingTask();
            void hideTitle();
            void showTitle(String title);
            void hideDescription();
            void showDescription(String description);
            void showCompletionStatus(boolean complete);
            void showEditTask(String taskId);
            void showTaskDeleted();
            void showTaskMarkedComplete();
            void showTaskMarkedActive();
            boolean isActive();
        }
    
        interface Presenter extends BasePresenter {
            void editTask();
            void deleteTask();
            void completeTask();
            void activateTask();
        }
    }
    

    每个Contract里边都定义了不同的View和Presenter接口,从整体看代码逻辑比较清楚。

    关于Contract,如果APP的每个页面逻辑相差不多的话,Contract是可以去掉的。可以让Activity可以继承同一个BaseActivity(Fragment同理),BaseActivity实现一个IActivity接口,将Presenter调用Activity的方法都写在这个接口里。而所有的Presenter都实现一个BasePresenter,然后在BasePresenter里引用IActivity。

    相关文章

      网友评论

          本文标题:谷歌官方MVP Contract浅解

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