Mvp模式 通俗化讲解

Mvc模式广泛应用与各种面向对象的编程之中,但是偶然间接触到mvp模式  m-model ,是指模型,v -view 是指视图,p-presenter 英文意为 主持人,演讲者,

其实mvp模式很简单,他是将多个model和多个view 集中集合封装在presenter中处理,让我们来看一个实例:我们要做一个业务,就是不论客户是买家具 买化妆品 还是买其他东西,都先要办理会员卡,那么我们将办理会员卡这个共同的点放在presenter当中,

public interface IPresenter {

                  public void  办理会员卡();

}

public interface 顾客{

               public void 买东西():

}

public  abstract   class   Presenter implements IPresenter {

               private 顾客 顾客a;

    public  Presenter (顾客){

                顾客a=顾客;

        }

    public void  超市买东西(){

               办理会员卡();//这里是公用部分

            顾客a.买东西();

      }

    public void  办理会员卡(){

           system.out("办理会员卡");

        }

}

这样  如果家庭主妇顾客买东西了    

家庭主妇顾客 impleement 顾客 {

      @overide 

       public void 买东西(){

        system.out("买菜");

    }   

         

}

在main函数中写

     家庭主妇顾客     A=new  家庭主妇顾客();

      Presenter p=new  Prestener(A);

        p.超市买东西();

如果是另一种顾客   比如公司顾客

公司顾客 impleement 顾客 {

     @overide        

      public void 买东西(){

        system.out("买办公用品");

    }   

         

}

上面是实现   下面是执行

        公司顾客  b=new   公司顾客();

        Presenter p=new  Prestener(B);

         p.超市买东西();

在Presenter的超市买东西函数中就调用了顾客的买东西方法,并且在这之前都办理了会员卡   下一个国外客户也是new一下然后当作Presenter的构造参数传进去,所有的共同的方法都在Presenter中处理了,这样以后遇到需求  美国客户自己写一个办理会员卡再购物之类的就不用在美国客户里面写办理会员卡的方法了,而且如果在办理会员卡之前要增加实名认证方法,直接在Presenter里面加,不用美国写一个实名认证  中国写一个实名认证,以色列搞一个  ,法国搞一个,调用的时候还得   美国顾客.实名认证();   中国顾客.实名认证();法国顾客.实名认证(); 直接在Presenter的超市买东西方法中最前面添加一个顾客.实名认证();就像这样

public  abstract   class   Presenter implements IPresenter {

               private 顾客 顾客a;

    public  Presenter (顾客){

                顾客a=顾客;

        }

    public void  超市买东西(){

              实名认证();//----------------------------------增加部分

               办理会员卡();

            顾客a.买东西();

      }

    public void  办理会员卡(){

           system.out("办理会员卡");

        }

    public  void 实名认证(){  //----------------------------------增加部分

           system.out("实名认证");//----------------------------------增加部分

}  //----------------------------------增加部分

}

 注意  :把Prestener弄成abstract,方便以后出现多种方式的分化,比如实名认证有手机认证和身份证认证

让实名认证方法定义为abstract方法 让子类实现

说到底  mvp就是把部分相同部分集中在一个中心 不同的东西分化出去,其中利用的还是接口的泛化作用 ,不懂泛化作用的可以看我的另一篇博客

http://blog.csdn.net/huangjunjie1991/article/details/71079678

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值