Como e porque usar dependency injection