Protocol-oriented composition
In an iOS ride service feature with route guidance, fare calculation, and live location updates, the inheritance hierarchy has gotten complicated. With protocol-oriented design, how would you compose the shared capabilities and the per-service differences?