In an Android project, I am using dagger 2 for dependency injection, applying mvp design pattern, and I am writing interface for almost every class. Although it does achieved the separation of concerns, each individual logic is not coupled with others. But for just making a simple REST call, it involved 20 plus java class files which makes the codebase to become very complex, I start to think is it normal to have 20 plus java classes for just making a simple REST call? Should I be really doing the MVP pattern and writing interfaces for every classes, or I am just doing it wrong? For Dagger 2, it requires to set up components, modules and scopes, that's 5 files including the parent and child components. For MVP pattern, there is an interface and an interface implementation class for the Model, View and Presenter, that's 6 files already. For the presenter, there is another layer that does the actual work of REST call, that's 4 files, interfaces and interface implementations for doing the REST call and result handling. Plus the activity class and it's parent class and some other utility classes and xml files, that's 20 plus files.