Android的MVP框架
来源:互联网 发布:win7网络栏无法显示 编辑:程序博客网 时间:2024/05/13 06:36
首先来说一下MVC和MVP的区别:
MVC(Model-View-Controller),这种模式下三种模型的交互关系如下:
缺点:view可以直接访问model(比如我们经常在activity中直接操作SQLite、SharedPreference中的数据),同时view中可能会包含业务逻辑(比如我们经常把一个点击事件的处理写在activity里,这样就使得view层和controller层混在一起,使得view无法重用)。尽管MVC的提出旨在使程序的数据和页面分离,通过controller去控制二者之间的联系,但实际view仍是依赖model的,而且view和controller耦合不清。
MVP(Model-View-Presenter),这种模式解决了MVC的两个缺点,它的三种模型交互关系如下:
view和model之间完全切断了联系,对model的操作完全放在了presenter里;view不再包含任何逻辑的处理,所有逻辑完全交给presenter。这样对于相同的业务逻辑但不同的界面,presenter就可以复用;相同的页面、不同的业务逻辑实现,view就可以复用。这种模式使得view的作用仅仅只是显示页面,它不能获取或操作数据、不能包含对逻辑的处理。
通过上述分析,MVP和MVC之间的区别就是:在MVP中,View与Model并不直接交互,所有的交互放在Presenter中;而在MVC里,View与Model会直接产生一定的交互。
下面通过一个特别简单的demo来理解一下MVP的原理,demo的功能是:点击Button会生成一个随机数,在TextView中显示出来。
<span style="font-family:Arial;">public class Contract { public interface View{ void setText(String str); } public interface Presenter{ void getRandomInt(); }}public class MainActivity extends Activity implements Contract.View{ TextView tv; Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); btn = (Button) findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getPresenter().getRandomInt(); } }); } private Contract.Presenter getPresenter(){ return new MyPresenter(this); } @Override public void setText(String str) { tv.setText(str); }}public class MyPresenter implements Contract.Presenter{ private Contract.View mView; public MyPresenter(Contract.View view){ mView = view; } @Override public void getRandomInt() { mView.setText("" + new Random().nextInt(100)); }}</span>
- Android的MVP框架
- 初试Android的MVP框架
- 实现Android的MVP框架
- 一步一步的实现Android的mvp框架
- Android中MVP框架的使用
- Android的MVP框架(MVPExtend)
- 【Android - 框架】之MVP模式的使用
- 【Android - 框架】之Dagger2+MVP的用法
- Android 开发中MVP框架的应用
- 如何一步一步实现Android的MVP框架
- Android MVP框架和简单的使用
- android MVP框架
- android 框架 MVP
- android项目框架MVP
- Android MVP框架详解
- Android MVP框架学习
- Android 框架MVP详解
- Android MVP框架
- jQuery学习笔记七:文档操作属性集合
- SpringMvc 3.2配置指南
- javaweb学习总结(二十)——JavaBean总结
- 你的意识的训练工具!神奇脑波--最专业的减压助眠脑波应用
- 柴俊理金:5月17号现货黄金,宁贵沥青操作建议
- Android的MVP框架
- 微软原版SQLHelper类
- 调用系统相机和图库,裁剪图片
- xx is not in the sudoers file 问题解决【转载】
- 记一次c#调matlab时初始化异常的解决过程
- POJ - 3252 Round Numbers (数位dp&位运算)
- C盘今天爆掉了,罪魁祸首--百度云管家
- UdpClient类使用
- Android PDF阅读