Dependency Injection
Dependency injection refers to passing your dependencies through a constructor as opposed to instantiating a new object and its dependencies.
By injecting our dependency we apply the dependency inversion principle and experience all of its great benefits. Using abstract interfaces is also very helpful for unit testing as it enables mock implementations.