MVP框架模式_mvvm模式

MVP框架模式_mvvm模式MVC框架模式 MVP框架模式 MVVM框架模式 MVP模式是MVC的一个演化版本,全称为:Model View Presenter MVP会解除View与Model的耦合。分离显示层与逻辑层,他们之间通过接口进行通讯,降低耦合。 1、Presenter 交互中间人 沟通View与Model的桥梁,

MVP模式是MVC的一个演化版本,全称为:Model View Presenter

MVP会解除View与Model的耦合。分离显示层与逻辑层,他们之间通过接口进行通讯,降低耦合。

 

1、Presenter——-交互中间人

沟通View与Model的桥梁,它从Model层检索出数据后返回给View层,使得View与Model之间没有耦合。

2、View———用户界面

View通常是指Activity、Fragment或者某个View控件,它含有一个Presenter成员变量。通常View需要实现一个逻辑接口,将View上的操作转交给Presenter进行实现,最后presenter通过调用View逻辑接口将结果返回给View元素。

3、Model——-数据的存取

负责数据的存取,Presenter通过Model层存储获取数据,Model就像一个数据仓库。更直白得说,Model是封装了数据库DAO或者网络获取数据得角色,或着两种方式获取数据的集合。

 MVP框架模式_mvvm模式

 MVP的优点:

  1. 将View与Model解耦,方便进行单元测试。
  2. 结构清晰,易于维护
  3. activity和fragment不再是controller层,而是纯粹的view层。

MVP缺点:

        1、类与接口将会增多,增加了代码量

        2、每个功能都得新增接口,presenter难以复用,比如该页面有许多网络请求,每个网络请求都得新增一个接口。后面新增一个页面发现只需要一个跟上个页面一样的接口,这时候如果复用上一个页面的presenter,那么就得实现其它用不到 的接口。

 

代码例子:

1、建立Contract(presenter与Activity需要继承的接口,IBasePresenter和IBaseLoadListView为基础的接口)

public interface AllGroupMemberContract {
    interface Presenter extends IBasePresenter {
        void getGroupUserList(boolean firstLoad, String groupId);
    }

    interface View extends IBaseLoadListView<GroupUserOuterClass.GroupUser> {
        void getList(List<GroupUserOuterClass.GroupUser> list);
    }
}

 

2、建立ViewModel———->GroupHttpAPi

 

3、建立presenter,AbsPresenter为基类。 

public class AllGroupMemberPresenter extends AbsPresenter implements AllGroupMemberContract.Presenter {

    private AllGroupMemberContract.View view;
    private List<GroupUserOuterClass.GroupUser> list = new ArrayList<>();

    public AllGroupMemberPresenter(AllGroupMemberContract.View view) {
        this.view = view;
    }

    @Override
    public void getGroupUserList(boolean firstLoad, String groupId) {
         list = GroupHttpAPi.getInstance().getGroupUserList(groupId)
         view.getList(list)
     }
}

4、activity继承AllGroupMemberContract.View

public class AllGroupMemberActivity extends BaseActivity implements AllGroupMemberContract.View {
  AllGroupMemberPresenter presenter = new AllGroupMemberPresenter(this);
  @Override
    public void getList(List<GroupUserOuterClass.GroupUser> list) {

   }
 }

 public getData() {
   presenter.getGroupUserList(firstPage, groupId);
 }
}

 

activity调用presenter的getGroupUserList方法,presenter调用ViewModel的方法,然后通过接口传给Activity

 

转载请表明:https://www.cnblogs.com/tangZH/p/14092741.html

今天的文章MVP框架模式_mvvm模式分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/48665.html

(0)
编程小号编程小号
上一篇 2023-09-03
下一篇 2023-09-03

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注