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,它们完整的表达了业务逻辑。是本软件的核心。
还有一点,不要过度设计。