Swift에서 프로토콜(Protocol)은 특정 역할이나 기능을 수행하기 위해 필요한 메서드, 프로퍼티, 및 기타 요구 사항을 정의하는 청사진입니다.
사용법
정의
protocol SomeProtocol {
var mustBeSettable: Int { get set } // 읽기 전용 또는 읽기/쓰기를 지정할 수 있습니다
var doesNotNeedToBeSettable: Int { get }
func someMethod() -> String
init(someParameter: Int)
}
채택
class SomeClass: SomeProtocol {
var mustBeSettable: Int
var doesNotNeedToBeSettable: Int
init(someParameter: Int) {
self.mustBeSettable = someParameter
self.doesNotNeedToBeSettable = 0
}
func someMethod() -> String {
return "Hello, World!"
}
}
프로토콜 확장(Protocol Extension)을 사용하는 이유
프로토콜 확장은 프로토콜의 기본 구현을 제공할 수 있게 합니다. 이는 프로토콜을 채택한 타입들이 기본 구현을 재정의하거나 추가적인 구현 없이도 프로토콜을 채택할 수 있게 합니다.
protocol SomeProtocol {
func someMethod() -> String
}
extension SomeProtocol {
func someMethod() -> String {
return "Default Implementation"
}
}
struct SomeStruct: SomeProtocol {
// 별도의 구현이 없어도 Default Implementation 사용 가능
}
장점
- 코드 재사용성: 프로토콜 확장을 통해 기본 구현을 제공하여 코드의 재사용성을 높일 수 있습니다.
- 다형성: 프로토콜을 통해 다형성을 쉽게 구현할 수 있으며, 이는 코드의 확장성과 모듈화를 촉진합니다.
- 보다 모듈화된 코드의 작성을 할 수 있게 해줍니다.