[swift] 프로토콜과 프로토콜 지향 설계 원칙 (POP principles)
프로토콜은 Swift 언어의 강력한 기능 중 하나로, 타입 간의 일반적인 기능을 정의하는데 사용됩니다. 프로토콜을 사용하면 코드의 유연성을 높일 수 있고, 재사용 가능한 코드 생성이 가능합니다.
프로토콜 지향 설계 원칙은 다음과 같습니다:
1. Protocol Composition
프로토콜 합성(promotion)이라고도 알려진 이 개념은 여러 프로토콜을 조합하여 더 큰 프로토콜을 만드는 것을 말합니다. 이를 통해 코드의 유연성과 모듈성을 높일 수 있습니다.
예제:
protocol Playable {
func play()
}
protocol Pauseable {
func pause()
}
// Playable 및 Pauseable 프로토콜을 조합하여 AudioPlayable 프로토콜을 만듬
protocol AudioPlayable: Playable, Pauseable {
func skip()
}
2. Protocol Inheritance
프로토콜은 클래스와 마찬가지로, 다른 프로토콜을 상속(확장)할 수 있습니다. 이러한 상속을 통해 다양한 기능을 조합하여 더 큰 프로토콜을 만들 수 있습니다.
예제:
protocol Loggable {
func log()
}
// Loggable 프로토콜을 상속하여 Debuggable 프로토콜을 만듬
protocol Debuggable: Loggable {
func debug()
}
3. Protocol Extensions
프로토콜의 확장을 통해 기본 구현을 제공할 수 있습니다. 이를 통해 프로토콜을 채택한 타입이 해당 기능을 구현하지 않아도 되게 할 수 있습니다.
예제:
protocol Resettable {
func reset()
}
// 프로토콜 확장을 통해 reset()의 기본 구현을 제공
extension Resettable {
func reset() {
print("Resetting")
}
}
프로토콜과 프로토콜 지향 설계 원칙을 잘 활용하면, 코드의 재사용성과 확장성을 향상시키는 데 도움을 줄 수 있습니다. 만약 자세한 내용을 알고 싶다면, Apple Developer Documentation를 참고하세요.