Decoupling components with Dependency Injection

In order to create maintainable and flexible architectures you must start to split your code responsibilities into several components, each of them with a single responsibility, but also low coupled. Let me show you what it means. To make it clear lets choose a common scenario: UsersRepository is a component that has the responsibility of [...]