MVP初级整理

每次看到别人的MVP模式,总感觉逼格很高,所以自己就尝试的看看学习下,不过好多都是模板的样式,而且看的时候感觉很深奥,但是弄了一个简单demo之后发现,其实TMD就是一群懒鬼想要让代码看起来舒服点,复用性高点而已,节约时间干其他的事,Holy shit,怪我年轻。(代码是从学习的demo中弄来的,要写也很简单,我很懒的···)

MVP:

         M:model,分为2个。

                   一个是需要实现的方法Imodel,方法主要用于对UI界面数据的操作或者说渲染,或者说查询那些操作。

梨子:

public interfaceIUserModel {

  void setID(int id);

  void setFirstName(StringfirstName);

  void setLastName(StringlastName);

  UserBeanload(intid);

}

                   一个是实现类Model,把可能传进来的数据进行具体的操作:

public classUserModel implementsIUserModel {

  private String mFristName;

  private String mLastName;

  private int mID;

  privateSparseArray<UserBean> mUsererArray = newSparseArray<UserBean>();

  @Override

  public void setID(int id) {

     mID = id;

  }

  @Override

  public void setFirstName(StringfirstName) {

     // TODO Auto-generated method stub

     mFristName = firstName;

  }

  @Override

  public void setLastName(StringlastName) {

     mLastName = lastName;

     UserBeanUserBean = newUserBean(mFristName,mLastName);

     mUsererArray.append(mID, UserBean);

  }

  @Override

  public UserBean load(int id) {

     mID = id;

     UserBeanuserBean = mUsererArray.get(mID, new UserBean("not found",

         "not found"));

     return userBean;

  }

}

 

 

V:view,视图,与其说是视图,倒不如说是个接口类,主要用于实现里面的方法,它的作用很简单,把可能需要用的数据全部得到;

public interfaceIUserView {

  int getID();

  StringgetFristName();

  StringgetLastName();

  void setFirstName(StringfirstName);

  void setLastName(StringlastName);

}

 

So,implementsIUserView之后只需要实现就可以了。

那么关键来了:

P:present,传说跟control一样的控制,对传进来的对象和数据进行操作:

public classUserPresent {

  private IUserView mUserView;

  private IUserModel mUserModel;

  public UserPresent(IUserViewview) {

     mUserView = view;

     mUserModel = new UserModel();

  }

  public void saveUser(int id, String firstName,String lastName) {

     mUserModel.setID(id);

     mUserModel.setFirstName(firstName);

     mUserModel.setLastName(lastName);

     Log.d("YOU", "保存数据");

  }

  public void loadUser(int id) {

     UserBeanuser = mUserModel.load(id);

  mUserView.setFirstName(user.getFirstName());

     mUserView.setLastName(user.getLastName());

     Log.d("YOU", "加载数据");

  }

}

 

关键点看到没有,初始化的时候传进来的IUserViewview,

还有UserModel的初始化。

明白了没?没明白?!没错,就是这样,UserModel只提供方法,其他的什么都不做,要做也是UserPresent来做,出事了别找Model!

而IUserView 用来干嘛的?就是在你数据被处理完了之后进行渲染或者设置数据用的。

Present里面就是传递一个需要处理的view,初始化方法类model,然后在里面提供方法,用model加工传进来的数据或者提供方法将数据设置给view。

 

那么present在哪里初始化,有怎么做呢

  @Override

  protected void onCreate(BundlesavedInstanceState) {

     super.onCreate(savedInstanceState);

     setContentView(R.layout.activity_main);

     mUserPresenter = new UserPresent(this);

  ··········

  }

 

就这么简单。

MVP,方法归方法(M),UI归UI(V),P只是一个操作者,因为用户实在UI界面进行事件的操作,所以P要在UI活动界面中初始化,然后将需要处理的V对象传入到P对象内部,而P对象内部新建或者说初始化M对象,P对象在V中通过自定义方法,将需要的数据传入进来,然后内部方法中会就将数据通过M处理好之后,交给V去设置或者显示。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值