如何实现MVP架构

MVP即Model—View—Presenter,从经典的设计模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。MVP架构的重点在于面向接口编程,通过接口将单一职能的Model 和 View联系起来
说起来容易做起来难,如何才能使用一个MVP架构呢?
1、Model对外暴露的接口:interface IGirlModel

public interface IGirlModel {

    void loadGirl(OnGirlLoadCompleter onGirlLoadCompleter);

    interface OnGirlLoadCompleter{
        void onCompleter(List<Girl> girlList);
    }
}

View对外暴露的接口:interface IGirlView

   public interface IGirlView {

    void showProgress();

    void showGirl(List<Girl> girlList);
}

Presenter业务逻辑控制类,持有Model和View的引用,否则如何关联?

public class IGirlPresenter {

    //View Interface
    IGirlModel iGirlModel = new GirlModelImpl();


    //Model Interface
    IGirlView iGirlView;

    public IGirlPresenter(IGirlView iGirlView){
        super();
        this.iGirlView =iGirlView;
    }

2、创建IGirlModel的实现类IGirlModelImpl

public class GirlModelImpl implements IGirlModel {

    @Override
    public void loadGirl(OnGirlLoadCompleter onGirlLoadCompleter) {
       加载数据 
        }
    }
}

在Activity中实现IGirlView接口

public class MainActivity extends Activity implements IGirlView{

    private ListView listView;
    private MyAdapter myAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.content_main);
        listView = (ListView) findViewById(R.id.listView);
        myAdapter = new MyAdapter(this);
        listView.setAdapter(myAdapter);
    }

    @Override
    public void showProgress() {

    }

    @Override
    public void showGirl(List<Girl> girlList) {
        myAdapter.setData(girlList);
    }
}

3、在IPresenter中定义一个方法将IGirModel和IGirlView关联起来

 public void fetch(){
        if(iGirlView!=null){
            iGirlView.showProgress();
            iGirlModel.loadGirl(new IGirlModel.OnGirlLoadCompleter() {
                @Override
                public void onCompleter(List<Girl> girlList) {
                    iGirlView.showGirl(girlList);
                }
            });
        }
    }

4、在IGirlView的实现类中调用Ipresenter中关联的方法,将IGirlModel中接口请求回来通过接口暴露出的数据在IGirView实现类中展示

 new IGirlPresenter(this).fetch();

如此我们便做到了IGirlModel请求数据,通过接口向外暴露,IGirlView展示数据,IPresenter持有二者的引用,将二者联系起来。这就是一个简单的MVP架构设计,是不是很简单啊,赶紧去学习吧!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值