Dependency Injection (DI) is a set of related patterns and principles. It’s a way to
think about and design code more than it’s a specific technology. The ultimate purpose
of using DI is to create maintainable software within the object-oriented paradigm.