Dependency Injection is a pattern where instead of creating or requiring
dependencies directly inside a module, we pass them as paramaeters or reference.
Benefits
Unit testing - Avoid need for stubbing
Flexibility - Freedom to change implementation at any point