Dependency injection (DI) facilitates loose coupling and promotes testability and maintenance. You can take advantage of dependency injection to change your implementations without having to change the classes or interfaces that leverage those implementations. Dependency injection is one of the SOLID principles of software architecture. It is used to decouple the usage of an object from the way the object is constructed.
To read this article in full, please click here