Frederick P. Brooks
1986
Design
Performance
Quality
Architecture
Tools
Yo modifico la vista
public interface View{
void setProgressVisible(boolean visible);
void showStories(List<TopStory> stories);
void showRequestError();
void launchActivity(Intent intent);
}Yo tomo las decisiones
public interface UserActionListener{
void requestTopStories();
void storyDetail(TopStory item);
}Yo consigo los datos, tengo fuentes confiables
public interface TopStoriesRepository {
interface FetchStoriesCallback {
void onSuccess(List<TopStory> stories);
void onError(Throwable t);
}
void fetchTopStories(FetchStoriesCallback callback);
}Fuentes de datos
public interface TopStoriesApiService {
interface TopStoriesApiCallback<T>{
void onLoaded(T stories);
void onError(Throwable t);
}
void fetchTopStories(
TopStoriesApiCallback<List<TopStory>> callback);
}
public interface TopStoriesLocalService {
interface TopStoriesLocalCallback<T>{
void onLoaded(T stories);
void onError(Throwable t);
}
void getLastTopStoriesSaved(
TopStoriesLocalCallback<List<TopStory>> callback);
}requestTopStories()showProgress(true)fetchTopStories(...)fetchTopStories(...)onLoaded(...)onSuccess(...)showStories(stories)requestTopStories()showProgress(true)fetchTopStories(...)fetchTopStories(...)onError(...)lastStoriesSaved(...)onError(...)onError(...)showRequestError(...)productFlavors {
mock {
applicationIdSuffix = ".mock"
}
prod {
}
}mRetrofitApiService.fetchTopStories()
.enqueue(new Callback<TopStoriesResponse>() {
@Override
public void onResponse(Response<TopStoriesResponse> response,
Retrofit retrofit) {
callback.onLoaded(response.body().getStories());
}
@Override
public void onFailure(Throwable t) {
if (BuildConfig.DEBUG)
t.printStackTrace();
callback.onError(t);
}
});List<TopStory> dummyStories = new ArrayList<>();
for (int i = 0; i < 10; i++) {
dummyStories.add(new TopStory());
}
callback.onLoaded(dummyStories)public class Injection {
public static TopStoriesRepository
provideTopStoriesRepository(){
return TopYorkRepositories
.getTopStoriesRepository(
TopStoriesApiClient.getInstance(),
TopStoriesLocalServiceImpl.getInstance());
}
}silmood
@silmood