參考:

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

架構圖:

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,它們完整的表達了業務邏輯。是本軟體的核心。

  還有一點,不要過度設計。