MVP (Model-View-Presenter)是总所周知MVC模式的一个演变,他们的主要目的都是划分模块职责,降低模块耦合,易测试,提高代码复用,网上有很多相关的知识,这里仅是个人看法。
<强> 1层级强>
模型:负责数据相关的操作
视图:负责UI的绘制和用户的交互
推荐者:作为模型和视图的中间协调部分,负责两者之间的业务逻辑处理
<强> 2,MVP的优缺点强>
优点:降低耦合,层级职责更明显,易于单元测试
缺点:造成类数量增多,在某些场景下主持人的复用会产生接口冗余
这几天把以前项目上做过的一个类似淘宝订单的页面单独提取出来重新做了一遍,把一些公共代码提取出来,方便以后用到类似界面简易集成,同时也用到了MVP框架,通过MVP之间各层次互相绑定的最基础的类,将数据和逻辑分离开,这是效果图
值得一提的是,这里用到了一些其他开源代码,比如刷新样式swipetoloadlayout等,具体的使用方法大家可以百度搜下名字就行了,资料很多。
4个片段用的统一的静态构建方法,配合:viewpage和TabLayout进行一次性集成
//统一的片段构建方法 公共静态MerchandiseListBaseFragment newInstance (int国旗){ 捆捆args=new ();//类型代表页签,0:全部订单1:待发货2:待收货3:已完成 arg游戏。putString(“类型”,String.valueOf(国旗)); MerchandiseListBaseFragment片段=new MerchandiseListBaseFragment (); fragment.setArguments (args); 返回片段; }
/* * *初始化:viewpage */私人空间initViewPager () { 最后ArrayList,fragmentList=new ArrayList<的在(); MerchandiseListBaseFragment merchandiseListAll=MerchandiseListBaseFragment。 newInstance (0); MerchandiseListBaseFragment merchandiseListDisPatch=MerchandiseListBaseFragment。 newInstance (1); MerchandiseListBaseFragment merchandiseListReceive=MerchandiseListBaseFragment。 newInstance (2); MerchandiseListBaseFragment merchandiseListFinish=MerchandiseListBaseFragment。 newInstance (3); MerchandiseListBaseFragment.firstGetData();//初始化数据//持有片段对象列表 fragmentList.add (merchandiseListAll); fragmentList.add (merchandiseListDisPatch); fragmentList.add (merchandiseListReceive); fragmentList.add (merchandiseListFinish); FragmentPagerAdapter fragmentAdapter=new BaseFragmentAdapter (getSupportFragmentManager (), fragmentList, mTitles); viewPager.setAdapter (fragmentAdapter); viewPager.setCurrentItem (0); viewPager.setOffscreenPageLimit (4); : viewpage。addOnPageChangeListener(新ViewPager.OnPageChangeListener () { @Override 公共空间>/* * * MVP绑定 */@Override 公共空间attachPre () { 活动=;//mContext=; mPresenter=TUtil。getT(这个,ID_PRESENTER); 模型=TUtil。getT(这个,ID_MODEL); 如果(mPresenter !=null) { mPresenter。mContext=; } initPresenter (); } >之前 这里的getT方法是用来得到类的模板参数的类型的,返回表示此类型实际类型参数的类型实例化对象。这样就可以获取视图
公共静态& lt; T>T getT(对象o, int i) { 尝试{ 返回((Class源码地址:https://github.com/WeaponZhi/MerchandiseList
以后有机会再研究下网络框架和MVP的集成,希望对大家的学习有所帮助,也希望大家多多支持。
安卓用MVP实现一个简单的类淘宝订单页面的示例