关于MVP的一点小小的看法
2016-12-10 15:34
225 查看
今天记录一下关于自己试用MVP的一点自己的理解。mvp 设计模式的好处我就不多说了 ,自行百度吧。
关于如何使用MVP模式。我的理解是这样子的。MVP--三者各司其职。我将MVP比作成一个厨师做饭, model作为宫保鸡丁的样式模式(即你需要多少的盐,要做一个什么口味的),View是厨师最终做出来展示的宫保鸡丁,P是他如何做的。。。。个人理解不喜勿喷!!
接下来讲如何做。。不对是如何写。。
首先我们要设计一个最基础的控制器,Contract,它直接控制着MVP三者(都是接口)的功能,我用一个LoginContract做一个范例。
首先设计一个适用于你自己的baseContarct
然后是具体定制的Contract,我们用 LoginContract来操作
接下来就是逐一的实现MVP。
先实现Presenter
接下来是Model,仅仅是一个基类。。。
最后是view,即 LoginActivity
由于没有时间抽出来一个demo ,我只讲一下如何实现(目前还在项目里面呢)
首先在LoginActivity实现
接下来绑定presenter
最后在LoginActivity实现具体的方法
其实MVP,model 控制着 这个模块的具体功能的模型,我理解为数据源,更简单点,可以说是基类。V就是view,即视图,你要展现给用户看到的东西。P则是逻辑业务,编写代码产生的逻辑都在这个里面生成。
这样MVP就会被高度的解耦,presenter可以被抽取出来用在任何你想用在的地方。
但是MVP模式目前出现的两个小缺点,
1.虽然高度解耦了,但是整个项目的代码量变的更多了。
2.高度解耦的碎片化,也就意味着你的项目一旦有所改变,从控制器到MVP几乎都要跟着改变。
目前先浅显的讲解一下,等有时间抽出来,做一个完整的DEMO
我叫小马,我会坚持写一些东西的。
关于如何使用MVP模式。我的理解是这样子的。MVP--三者各司其职。我将MVP比作成一个厨师做饭, model作为宫保鸡丁的样式模式(即你需要多少的盐,要做一个什么口味的),View是厨师最终做出来展示的宫保鸡丁,P是他如何做的。。。。个人理解不喜勿喷!!
接下来讲如何做。。不对是如何写。。
首先我们要设计一个最基础的控制器,Contract,它直接控制着MVP三者(都是接口)的功能,我用一个LoginContract做一个范例。
首先设计一个适用于你自己的baseContarct
public interface BaseContract { public interface View { } public interface Presenter { } }
然后是具体定制的Contract,我们用 LoginContract来操作
public interface LoginContract { interface Presenter extends BaseContract.Presenter { void loginning();//执行登陆接口 void destory();//销毁登录请求 } interface View extends BaseContract.View { void loginSuccess(Login login);//登录成功 void loginFail(String failed);//登录失败 void loginError(String error);//请求发生错误 String getUserName();//得到用户名 String getPassword();//得到密码 } }
接下来就是逐一的实现MVP。
先实现Presenter
public class LoginPresenter implements LoginContract.Presenter { private LoginContract.View view; public LoginPresenter( LoginContract.View view,) { this.view = view; }
@Override
public void loginning() {
//在这里面实现登录请求的方法
}
@Override
public void destory() {
//这里面实现销毁登录请求的方法
}}
接下来是Model,仅仅是一个基类。。。
最后是view,即 LoginActivity
由于没有时间抽出来一个demo ,我只讲一下如何实现(目前还在项目里面呢)
首先在LoginActivity实现
implements LoginContract.View
接下来绑定presenter
LoginPresenter presenter = new LoginPresenter( LoginActivity.this,LoginContract.model);
最后在LoginActivity实现具体的方法
@Override public void loginSuccess(Login loginInfo) { } @Override public void loginFail(String failed) { } @Override public void loginError(String error) { } @Override public String getUserName() { return etUserName.getText().toString(); } @Override public String getPassword() { return etPassword.getText().toString(); }
其实MVP,model 控制着 这个模块的具体功能的模型,我理解为数据源,更简单点,可以说是基类。V就是view,即视图,你要展现给用户看到的东西。P则是逻辑业务,编写代码产生的逻辑都在这个里面生成。
这样MVP就会被高度的解耦,presenter可以被抽取出来用在任何你想用在的地方。
但是MVP模式目前出现的两个小缺点,
1.虽然高度解耦了,但是整个项目的代码量变的更多了。
2.高度解耦的碎片化,也就意味着你的项目一旦有所改变,从控制器到MVP几乎都要跟着改变。
目前先浅显的讲解一下,等有时间抽出来,做一个完整的DEMO
我叫小马,我会坚持写一些东西的。
相关文章推荐
- 关于对ac自动机的一点小小看法
- 转载CSDN上关于GOOGLE的一则评论,后面也有自己的一点小小的看法
- 关于存储过程的使用一点看法
- 关于应用程序支持GUI和CLI界面共存一点看法!
- 关于软件架构、设计模式和应用框架的一点看法
- 关于W3cn的观点 (三).关于布局的一点看法
- 一点关于Ares的看法
- 关于在html中加注释的一点小小心得
- 对李洪根在csdn的blog上的一篇关于数据库安装的一点个人看法。
- 关于网络安全的一点看法
- 关于新技术的一点看法
- 关于BCB,VC的一点个人看法
- 关于linb的一点看法
- 关于转载“一种新的穿透防火墙的数据传输技术”的一点看法
- 关于爱情和婚姻的一点看法
- 关于vs 2005 类设计器的一点看法
- [转移]关于欧盟对微软课以6.13亿美元巨额罚款的一点看法
- 关于跳槽的一点看法
- 关于语言排行的一点看法
- 关于webcontrol和pagelet的一点看法