# 协议的定义与实现

URL: https://caijiao.org/swift/08-protocol-oriented/01-protocols
Source: docs/swift/08-protocol-oriented/01-protocols.md
Description: 本章介绍 Swift 中协议的定义与实现，帮助开发者通过协议实现接口抽象和多态，提高代码灵活性和复用性。

协议定义一组方法和属性的蓝图，任何类型都可以遵循协议，实现这些要求。

## 定义协议

使用 `protocol` 关键字定义协议：

```swift
protocol Greetable {
    var name: String { get }
    func greet()
}
````

## 遵循协议

类、结构体或枚举通过声明遵循协议并实现协议要求：

```swift
struct Person: Greetable {
    var name: String
    func greet() {
        print("你好，\(name)！")
    }
}
```

## 使用协议类型

协议可以作为类型使用，实现多态：

```swift
func sayHello(to entity: Greetable) {
    entity.greet()
}

let p = Person(name: "小明")
sayHello(to: p)  // 输出：你好，小明！
```

协议是 Swift 中面向协议编程（POP）的核心，增强代码灵活性和扩展性。
