In this chapter, we focused a lot on decoupling code. Since our game design is very likely to change, we want to make sure that our high-level modules don't depend on derived stages or components. That is why we should follow the Dependency Inversion Principle, which says the following:
- High-level modules should not depend on low-level modules. Both should depend on abstractions.
- Abstractions should not depend on details. Details should depend on abstractions.
In simpler terms, this means that all our code should be built around the interfaces. We used the example of our M5StageManager
not being dependent on derived M5Stage
classes. Since we want to avoid class dependencies like this, we learned that we should also avoid hard coding, including using calls to the new
operator. In order to avoid direct calls to the new
operator, we learned about three ways to make Factories.
The first method was the classic Gang of Four Factory method, which says we should create a hierarchy of classes...