Dependency Injection
Inversion of Control: https://en.wikipedia.org/wiki/Inversion_of_control
Dependency Injection Design Pattern: https://www.martinfowler.com/articles/injection.html
Dependency Injection is an Inversion of Control technique for supplying objects (‘dependencies’) to a class by way of the Dependency Injection Design Pattern. Typically passing dependencies via one of the following:
A constructor
A public property or field
A public setter