总结:
面向对象编程和面向协议编程最明显的区别在于程序设计过程中对 数据类型的抽取(抽象) 上,面向对象编程使用 类和继承 的手段,数据类型是引用类型;而面向协议编程使用的是 遵守协议 的手段,数据类型是值类型(Swift中的结构体或枚举)。
面向协议编程是在面向对象编程基础上发展而来的,而并不是完全背离面向对象编程的思想。
面向对象编程是伟大的编程思想,也是当今主流的编程思想,它的问题在于被过多的使用在其实并不需要使用它的情况下。
Swift是一门支持多编程范式的语言,既支持面向对象编程,也支持面向协议编程,同时还支持函数式编程。在项目开发过程中,控制器和视图部分由于使用系统框架,应更多采用面向对象编程的方式;而模型或业务逻辑等自定义类型部分,则应优先考虑面向协议编程。