- Single responsibility principle;
- Open/close principle;
- Liskov substitution principle;
- Interface segregation principle;
- Dependency inversion principle;
It centralizes the data logic or Web service access logic. It provides a substitution point for the unit tests. It provides a flexible architecture that can be adapted as the overall design of - the application evolves.