Swift as a protocol-oriented programming language
As we did with the object-oriented design, we will start off by creating a very basic diagram that shows how to design the vehicle types in a protocol-oriented way. Just like the object-oriented diagram, this will be a very basic diagram that simply shows the types themselves without much detail:
The protocol-oriented design is quite a bit different from the object-oriented design. In the object-oriented design, we started the design with the superclass, which became the focus of the design and all subclasses inherited functionality and properties from that superclass.
In the protocol-oriented design, we start the design with the protocol. The protocols and protocol extensions are the focus of the protocol-oriented design; however, as we have seen throughout this book, protocol-oriented design isn't simply about the protocol.
In this new design, we use three techniques that make protocol-oriented programming significantly different from object...