当前位置: 首页 > news >正文

如何由网页生成网站网站做专题

如何由网页生成网站,网站做专题,业务外包是什么意思,深圳企业建站平台mvvm可以理解成使用databing的mvp模式#xff0c;modleview 通过接口让view和Presenter层解耦 从图中就可以看出#xff0c;最明显的差别就是view层和model层不再相互可知#xff0c;完全的解耦#xff0c;取而代之的presenter层充当了桥梁的作用#xff0c;用于操作view…mvvm可以理解成使用databing的mvp模式modleview 通过接口让view和Presenter层解耦 从图中就可以看出最明显的差别就是view层和model层不再相互可知完全的解耦取而代之的presenter层充当了桥梁的作用用于操作view层发出的事件传递到presenter层中presenter层去操作model层并且将数据返回给view层整个过程中view层和model层完全没有联系。看到这里大家可能会问虽然view层和model层解耦了但是view层和presenter层不是耦合在一起了吗其实不是的对于view层和presenter层的通信我们是可以通过接口实现的具体的意思就是说我们的activityfragment可以去实现实现定义好的接口而在对应的presenter中通过接口调用方法。不仅如此我们还可以编写测试用的View模拟用户的各种操作从而实现对Presenter的测试。这就解决了MVC模式中测试维护难的问题。 ----------------------------------- android开发mvp案例 安卓开发mvp https://blog.51cto.com/u_14844/7436944 例子 布局文件我就不介绍了大家都能猜到了 首先先看一下MainConstract MainConstract 里面包含了View、Model、Presenter三层的接口用于给对应的三层实现。把它写在一个类里是为了减少class文件的创建。 public class MainConstract {     public interface IMainView {         //刷新列表数据         void refreshData(ListString data);         //刷新数据失败提示         void showRefreshError(); }     public interface IMainModel {         //访问网络获取数据模型         void getListData(OnHttpCallBackListString onHttpCallBack);     } public interface IMainPresenter {         //获得Model层返回的列表数据         void getListData();     } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 大家可能注意到上面的OnHttpCallBack它是为了给请求数据成功和失败进行回调的接口 public interface OnHttpCallBackT { void onSuccess(T data);     void onFail(String error); } 1. 2. 3. 4. 5. Model层的代码 public class MainModel implements MainConstract.IMainModel {     Override     public void getListData(final OnHttpCallBackListString onHttpCallBack) {        new AsyncTaskVoid,Void,ListString(){            Override            protected ListString doInBackground(Void... voids) {                //模拟请求网络获得数据                try {                    Thread.sleep(2000);                } catch (InterruptedException e) {                    e.printStackTrace();                }                ListString datanew ArrayList();                for (int i 0; i 10; i) {                    data.add(条目:i);                }                return data;            }            Override            protected void onPostExecute(ListString data) {                super.onPostExecute(data);                //成功获取数据回调                onHttpCallBack.onSuccess(data);            }            Override            protected void onCancelled(ListString data) {                super.onCancelled(data);                //获取数据失败回调                onHttpCallBack.onFail(获取数据超时....);            }        }.execute();     } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 可以看到model层只负责数据的获取和解析成对应的数model这个和MVC的Model层一致成为一个独立的单元其他层不需要关心它是如何实现达到解耦的目的。 View层代码 public class MainActivity extends AppCompatActivity implements MainConstract.IMainView { ListView listView;     SwipeRefreshLayout swipeRefreshLayout;     private ListString mDatanew ArrayList();     private MainPresenter mainPresenter;     private ListAdapter listAdapter; Override     protected void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         listView (ListView) findViewById(R.id.listview);         //初始化Presenter层         mainPresenter new MainPresenter(this);         listAdapter new ListAdapter(this,mData);         listView.setAdapter(listAdapter);         //初始化填充数据         mainPresenter.getListData();     }     Override     public void refreshData(ListString data) {         listAdapter.updateData(data);     }     Override     public void showRefreshError() {         Toast.makeText(this,数据获取失败,Toast.LENGTH_LONG).show();     } } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 可以看到Activity彻底的成为View层只负责UI的显示、隐藏、数据的填充实际上到底在什么时候显示隐藏填充数据View层完全不需要考虑只需要提供接口给Presenter层调用把所有的业务逻辑交给Presenter层处理。 Presenter层代码 public class MainPresenter implements MainConstract.IMainPresenter { private MainModel mainModel;     private MainConstract.IMainView mainView; public  MainPresenter(MainConstract.IMainView mainView){         this.mainViewmainView;         mainModel new MainModel();     }     Override     public void getListData() {         mainModel.getListData(new OnHttpCallBackListString() {             Override             public void onSuccess(ListString data) {                 //数据获取成功后刷新adapter                 mainView.refreshData(data);             }             Override             public void onFail(String error) {                 //数据获取失败提示语                 mainView.showRefreshError();             }         });     } } ----------------------------------- android开发mvp案例 安卓开发mvp https://blog.51cto.com/u_14844/7436944
http://www.zqtcl.cn/news/497832/

相关文章:

  • xml做网站源码免费网站是
  • 中国工商建设标准化协会网站织梦app网站模板
  • 怎么做好网络销售文大侠seo博客
  • wish网站应该怎么做网站建设前规划
  • 网站建设目的是什么建筑机械人才培训网官网
  • 建筑建设行业网站大型购物网站开发
  • 手机网站开发用什么设计之家网
  • 网站开发平台有哪些什么是网络开发
  • 学校网站前置审批网站做哪些比较有意思
  • 怎么给企业做网站学计算机网站建设
  • 网站关键词优化排名技巧aiyuan wordpress
  • 建设工程资质证书二维码扫描网站自己做的网站如何让qq登录
  • 网站域名有效期wordpress 特别慢
  • 建立个人网站服务器如何用dedecms做网站
  • php网站开发实市场推广策略 包括哪些
  • 合众商道网站开发可以投稿的写作网站
  • 北京贸易公司网站制作免费的查企业的网站
  • 网站建设报价表模板下载小程序怎么找出来
  • 网站制作简单协议wordpress快速建站教程视频教程
  • 杭州做网站价格北京企业响应式网站建设
  • 30个成功的电子商务网站设计中企动力 网站报价
  • php 网站开发 视频百度seo排名查询
  • 网站开发代码wordpress提示安装
  • 网站推广的策略高端网球拍
  • 广东知名网站建设wordpress 用户量
  • asp源代码网站网络架构图是什么
  • 专业做淘宝网站公司吗苏州网站制作开发
  • 电商网站模板html安阳历史
  • seo快速排名多少钱安阳网站怎么优化
  • 如何在网站后台删除栏目阿里巴巴上做网站要多少钱