Different ways to decouple
In Swift, there are many ways to implement dependency injection. In this section, I will show you three methods by means of abstraction: get used to a humble protocol being described this way: calling it abstraction when we are speaking about decoupling via DIP. I won’t show you the versions that are not decoupled via an abstraction, as that is not what I want to teach you.
The three approaches I will show you are as follows:
- Initializer injection
- Property injection
- Method injection
Let’s look at these in more detail next.
Initializer injection
In a Mermaid diagram, due to the limitations of UML diagrams, which originated much earlier than Swift, we have to represent a Swift protocol with an abstract class. This is the closest concept to a Swift protocol, as UML was created with languages such as C++ and Java in mind, not Swift:
Figure 10.3 – Initializer injection
Initializer...