您的位置:首页 > 其它

MVP初级整理

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

MVP:

         M:model,分为2个。

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

梨子:

public
interface
IUserModel {
  void setID(int id);
  void setFirstName(StringfirstName);
  void setLastName(StringlastName);
  UserBeanload(intid);
}

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

public
class
UserModel 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
interface
IUserView {
  int getID();
  StringgetFristName();
  StringgetLastName();
  void setFirstName(StringfirstName);
  void setLastName(StringlastName);
}

 

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

那么关键来了:

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

public
class
UserPresent {
  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去设置或者显示。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: