Last active
August 26, 2016 11:42
-
-
Save jayjaykim/ee96578e6d6110ff452da69e2a570d37 to your computer and use it in GitHub Desktop.
Legacy MV vs MVP
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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