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

参考:

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

架构图:

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

1、View层

 public interface NewsView {
void showProgress();
void addNews(List<NewsBean> newsList);
void hideProgress();
void showLoadFailMsg();
}

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

 public class NewsListFragment extends Fragment implements NewsView,xxx

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

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

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

--因为 依赖倒置原则 。

2、Model层

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

具体实现

public class NewsModelImpl implements NewsModel {...

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

3、Presenter层

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

实现代码

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

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

--同样是依赖倒置原则

4,总结

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

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

上一篇:linux登录windows服务器


下一篇:凡事预则立-于Beta冲刺前