Dependency injection versus dependency inversion