參考:
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,它們完整的表達了業務邏輯。是本軟體的核心。
還有一點,不要過度設計。