Dependency injection at first seems like a complex topic, but for the most part it is a simple concept. It is a design pattern aimed at making your code within your applications more flexible so that you can swap out certain functionality when needed. The idea builds around setting up dependencies between classes in an application so that each class only interacts with an interface or base/abstract class. This gives you the freedom to override different methods on each platform when you need to fill in native functionality.
The concept originated from the SOLID object-oriented design principles, which is a set of rules you might want to research if you are interested in software architecture. The D in SOLID stands for dependencies. Specifically, the principle declares that a program should depend upon abstractions, not concretions (concrete types).
To build upon this concept, let's walk through the following example:
Let's assume we need to store a setting in...