mvp(2)一个简单示例,加深理解

参考:

   http://www.cnblogs.com/liuling/p/mvp-pattern-android.html

架构图:

1、View层

1 public interface NewsView {
2     void showProgress();
3     void addNews(List<NewsBean> newsList);
4     void hideProgress();
5     void showLoadFailMsg();
6 }

这些接口是显示view。具体的view在NewsListFragment中。

1 public class NewsListFragment extends Fragment implements NewsView,xxx

 

--为什么要有个NewView接口?它在哪里使用?

--在Presenter层要访问View层。一般presenter要有一个view的指针或句柄等。

--那么presenter直接有NewsListFragment就可以了,为什么还要个NewsView接口?

--因为 依赖倒置原则 。

2、Model层

1 public interface NewsModel {
2     void loadNews(String url, int type, NewsModelImpl.OnLoadNewsListListener listener);
3     ......
4 }

具体实现

public class NewsModelImpl implements NewsModel {...

这里它很简单,只负责数据管理就可以了。

3、Presenter层

1 public interface NewsPresenter {
2     void loadNews(int type, int page);
3 }

实现代码

1 public class NewsPresenterImpl implements NewsPresenter, NewsModelImpl.OnLoadNewsListListener {
2     private static final String TAG = "NewsPresenterImpl";
3     private NewsView mNewsView;
4 ...

 

--presenter与view层关联。view直接使用presenter指针不就好了?

--同样是依赖倒置原则

4,总结

  在上述示例中,抽象层 NewsModel,NewsView,NewsPresenter 分别扮演mvp,它们完整的表达了业务逻辑。是本软件的核心。

  还有一点,不要过度设计。

 

posted @ 2016-03-08 23:23  f9q  阅读(210)  评论(0编辑  收藏  举报