知识卡片

协议是只声明不实现的契约

专业/工作 · 636.a

内容

协议只声明一组属性和方法的存在,不包含任何实现,它本身也不是一个可实例化的数据类型; 遵守协议的类型必须自己填上这些属性和方法的具体实现。这类似汽车厂商只制定零件接口标准 (尺寸、接口位置),并不亲自生产轮胎和引擎——各个零件厂商只需按标准各自生产,彼此不需要 了解对方的内部实现,最终却能拼装在一起。发散:这把”约定长什么样”和”具体怎么做到”彻底 拆开,调用方只需要依赖协议这层契约,不必关心背后到底是哪个具体类型在实现,这正是面向 接口/协议编程能够降低耦合的根本原因——耦合的对象从”具体实现”变成了”稳定的契约”。

参考来源

《Swift 4从零到精通iOS开发》第11章《类型转换、泛型、扩展与协议》