Skip to content

Instantly share code, notes, and snippets.

@jayjaykim
Last active August 26, 2016 11:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jayjaykim/ee96578e6d6110ff452da69e2a570d37 to your computer and use it in GitHub Desktop.
Save jayjaykim/ee96578e6d6110ff452da69e2a570d37 to your computer and use it in GitHub Desktop.
Legacy MV vs MVP
/**
* Legacy
*/
public class ActivityA {
public void onCreate(A state) {
Volley.getList(new Callback() {
public void onSuccess(List<Image> list) {
showImageList(List<Image> list);
}
public void onError() {
// todo handling error
}
});
}
public void showImageList(List<Image> list) {
// todo update RecyclerView
}
}
/**
* MVP
*/
public interface MainView {
public void showImageList(List<Image> list);
}
public interface MainPresenter {
void setView(MainView view);
void getIOIImages();
}
public interface IOIImageManager {
void setPresenter(MainPresenter presenter);
void getIOIImages();
}
// view
public class ActivityA implement MainView {
MainPresenter presenter;
public void onCreate(A state) {
// presenter = new MainPresenterImpl();
presenter.setView(this);
presenter.getIOIImages();
}
public void showImageList(List<Image> list) {
// todo update RecyclerView
}
}
// presenter
public class MainPresenterImpl implements MainPresenter{
WeakReference<MainView> view;
IOIImageManager model = new IOIImageManagerImpl();
void setView(MainView view) {
this.view = new WeakReference<>(view);
}
void getIOIImages() {
// todo access remote data
manager.getIOIImages(new Callback() {
public void onResponse(List<Image> list) {
// sorting. filtering. businessl logic.
if(view.get() != null)
view.get().showImageList(list);
}
});
}
}
// model
public class IOIImageManagerImpl implements IOIImageManager {
MainPresenter presenter;
void setPresenter(MainPresenter presenter) {
this.presenter = presenter;
}
public void getIOIImages() {
// todo real access to remote data
presenter.onResponse(list);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment