Dependency Injection
Chances are you have used dependency injection without even knowing it! It sounds quite complicated, but in reality it is quite simple. It is a design pattern that causes a greater degree of decoupling and makes testing easier. It also allows for greater flexibility in your system by externalizing dependencies.
Read