In this chapter, we saw how we could design vehicles for a video game in a protocol-oriented way. We saw how we could use protocol composition and protocol inheritance, which allowed us to create smaller and more specific protocols as compared to using a single superclass. We also saw how the 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.