In this chapter, we learned how to design vehicles for a video game in a protocol-oriented way. We discovered how we could use protocol composition and protocol inheritance, which allowed us to create smaller and more specific protocols instead of using a single superclass. We also examined how protocol-oriented programming resolved some of the issues that we encountered with the object-oriented design.
In the next chapter, we will look at how we can implement some of the more popular design patterns with Swift.