android的mvp与传统的mvc的比较
来源:互联网 发布:开源旅游cms 编辑:程序博客网 时间:2024/06/14 05:45
http://blog.csdn.net/lmj623565791/article/details/51339751;
本文出自:【张鸿洋的博客】
昨天晚上看了下我的偶像鸿神的博客,他博客中有一篇Android的mvp与传统的mvc的比较,我阅读了一遍之后,整个人神清气爽,太棒了,不愧是我的鸿神,然后自己吧思路整理了下,通过自己的理解吧他写在自己的博客上,以便不时之需。
mvc是业务逻辑层,视图层,控制层。由于Android的layout的布局的原因,导致视图层也被放到了activity中,又由于activity本身承担着控制层的任务,这样一看来,就会导致activity中代码很臃肿,不便于管理。下面是我用他的例子敲的
public interface RequestBiz {//定义一个接口,public void requestData(RequestListener listener);}
import java.util.List;/** * 回调函数 * */public interface RequestListener {public void onsucess(List<String> data);
public void foresult();}
//实现它的方法
public class RequestBizImp implements RequestBiz {@Overridepublic void requestData(final RequestListener listener) {new Thread(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubList<String> list = new ArrayList<String>();for (int i = 0; i < 10; i++) {String name = "刘备" + i;list.add(name);}if (list != null) {// 获取到的数据添加到回调函数中listener.onsucess(list);}else{
<span style="white-space:pre"></span>listener.<span style="font-family: Arial, Helvetica, sans-serif;">foresult();</span>}}).start();}}//在MainActivity中
public class MainActivity extends ActivityOnItemClickListener {private ListView listview;private Handler handler = new Handler();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);listview = (ListView) findViewById(R.id.listview);// mvcģʽ mvc();}private void mvc() {RequestBiz biz = new RequestBizImp();biz.requestData(new RequestListener() {@Overridepublic void onsucess(final List<String> data) {// TODO Auto-generated method stubhandler.post(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubArrayAdapter<String> adapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1, data);listview.setAdapter(adapter);}});}
@Override<span style="white-space:pre"></span>public void foresult() {<span style="white-space:pre"></span>// TODO Auto-generated method stub<span style="white-space:pre"></span>System.out.println("数据为空");<span style="white-space:pre"></span>}});}
//mvp的模式
此图在鸿神博客中截取出来的。便于我以后参加的理解。
有图的话我就无需废话了,直接上代码
activity管理view
public interface Myview {// mvp是activity控制viewpublic void listData(List<String> list);}
public class Persten {private RequestBiz biz;private Myview myview;private Handler handler;public Persten(Myview myview) {// 初始化this.myview = myview;// 实现接口biz = new RequestBizImp();handler = new Handler(Looper.getMainLooper());}// 初始化数据public void onResume() {biz.requestData(new RequestListener() {@Overridepublic void onsucess(final List<String> data) {// TODO Auto-generated method stubhandler.post(new Runnable() {@Overridepublic void run() {myview.listData(data);}});}});}public void getPostion(int postion) {Toast.makeText(MyAppliction.getContext(), "第" + postion + "项", 0).show();}
public class MainActivity extends Activity implements Myview,OnItemClickListener {private ListView listview;...............private Persten persten;
persten = new Persten(this);<span style="white-space:pre"></span>listview.setOnItemClickListener(this);
@Override<span style="white-space:pre"></span>protected void onResume() {<span style="white-space:pre"></span>// TODO Auto-generated method stub<span style="white-space:pre"></span>super.onResume();<span style="white-space:pre"></span>// 初始化数据<span style="white-space:pre"></span>persten.onResume();<span style="white-space:pre"></span>}
@Override<span style="white-space:pre"></span>public void listData(List<String> list) {<span style="white-space:pre"></span>ArrayAdapter<String> adapter = new ArrayAdapter<String>(<span style="white-space:pre"></span>getApplicationContext(), android.R.layout.simple_list_item_1,<span style="white-space:pre"></span>list);<span style="white-space:pre"></span>listview.setAdapter(adapter);<span style="white-space:pre"></span>}<span style="white-space:pre"></span>@Override<span style="white-space:pre"></span>public void onItemClick(AdapterView<?> adapterView, View view, int postion,<span style="white-space:pre"></span>long l) {<span style="white-space:pre"></span>// TODO Auto-generated method stub<span style="white-space:pre"></span>persten.getPostion(postion);<span style="white-space:pre"></span>}
感谢我的鸿神,<span style="color: rgb(85, 85, 85); font-family: 'microsoft yahei'; font-size: 14px; line-height: 17.5px; background-color: rgba(128, 128, 128, 0.0470588);">本文出自:</span><a target=_blank href="http://blog.csdn.net/lmj623565791/" style="text-decoration: none; box-sizing: border-box; color: rgb(12, 137, 207); font-family: 'microsoft yahei'; font-size: 14px; line-height: 17.5px; background-color: rgba(128, 128, 128, 0.0470588);">【张鸿洋的博客】</a>
此文写于2016年5月11日,此时本人正读大二。转载并自己用自己的话写出来不为别的,只为自己能更好的了解他,
0 0
- android的mvp与传统的mvc的比较
- Android中的MVP模式与MVC模式的比较分析
- android的MVC、MVP、MVVM比较
- MVC,MVP,MVVM的比较
- MVC和MVP的比较
- MVP与MVC的区别 in Android
- Android---MVP模式介绍,以及MVP与MVC的区别
- MVP 与MVC 的区别
- MVC与MVP的区别
- MVP与MVC的异同
- mvc与mvp的区别
- MVP与MVC的区别
- MVC,MVP,MVVM设计模式的比较
- MVC、MVP及MVVM的比较
- MVC、MVP和MVVM的比较
- Android MVP与MVC的区别和理解
- 学习笔记:Android里面的MVC模式与MVP模式
- 浅谈Android中MVP模式与MVC模式的区别
- java 装饰设计模式
- poj1088 滑雪(记忆化搜索)
- leetcode_155_Min Stack(C++)(easy)
- List集合排序(默认及自定义排序)
- A Beginner's Guide To LVM [1/9]
- android的mvp与传统的mvc的比较
- spring mvc传值 html取值
- caffe cifar10 net笔记
- ios数组倒序
- Apache POI系列教程2-1:poi入门教程--excel百万数据的导入导出
- 《机器学习实战》AdaBoost算法的分析与实现
- 一个简单的Java单例示例谈谈并发
- 使用CocoaPods(新建和更新)
- 阿里云CentOS6.5安装java web 环境