加载中...
面向协议编程是一种以协议(接口)为核心组织代码的编程范式,由苹果公司在 Swift 语言中大力推广。它主张优先通过协议及协议扩展来定义行为和共享实现,以组合替代继承,规避传统类继承带来的种种问题。

| 类型 | 编程范式 |
| 简称 | POP |
| 推广者 | 苹果公司(Swift) |
| 核心主张 | 组合优于继承 |
面向协议编程(Protocol-Oriented Programming,简称 POP)是一种以协议为中心来构建程序的编程范式。它鼓励先定义描述能力的协议,再让各种类型去遵循这些协议,并借助协议扩展提供默认实现,从而以组合和抽象的方式共享行为。
面向协议编程由苹果公司在 2015 年推广 Swift 语言时正式提出并大力倡导。它针对传统面向对象中类继承的局限,例如单继承的限制、深层继承带来的脆弱性,以及基类被迫承担过多职责等问题,主张用协议来定义契约、用组合来复用能力。
面向协议编程主要活跃于 Swift 生态,用于构建可测试、可组合的模型层和框架,例如通过协议抽象数据源、网络层、可展示对象等。它使代码更易于用模拟对象进行测试,也让不同类型能在不共享继承关系的前提下拥有一致的接口。
问:面向协议编程和面向接口编程是一回事吗?答:思想相近,都是面向抽象编程。不同之处在于协议扩展能为遵循者提供默认实现,这让协议不仅是纯粹的契约,还能承载共享逻辑,超出了传统接口的能力。
问:它彻底否定继承吗?答:并非否定,而是主张在合适时以协议组合替代过度的类继承。对确有明确父子关系的场景,继承依然适用,两者应按需选择。

| 类型 | 编程范式 |
| 简称 | POP |
| 推广者 | 苹果公司(Swift) |
| 核心主张 | 组合优于继承 |
登录 后参与讨论
暂无讨论,来发表第一条评论吧