프로토콜 정의
- protocol은 Swift의 class나 struct의 함수를 정의하는 역할을 한다.
- swift에서 protocol은 타입으로 작용한다.
예를 들어서 알아보자
protocol은 Swift의 class나 struct의 함수를 정의하는 역할을 한다.
protocol Animal{
func sleep()
}
class Dog: Animal{
func sleep(){
print("dog sleep")
}
}
protocol에서 Animal의 행동을 정의만 해 놓는다.
protocol 내부 함수를 사용하기 위해서는 class, struct를 생성한 후에 상속을 받아 사용해야 한다.
swift에서 protocol은 타입으로 작용한다.
protocol Animal{
func sleep()
}
class Dog: Animal{
func sleep(){
print("dog sleep")
}
}
// 매개변수로 Animal을 받는 함수 생성
func doghouse(animal: Animal){
animal.sleep()
}
let dog = Dog()
doghouse(animal: dog) //dog sleep 출력
Animal을 매개변수로 받는 함수를 하나 생성한 후 Dog 클래스를 인스턴스로 생성한다.
함수를 호출한 뒤 매개변수로 dog 인스턴스를 넘겨주면 Dog클래스 내부에 sleep() 함수가 실행된다.
protocol이 중요한 이유
객체의 유연한 설계를 위해 정의와 구현이 분리되어야 한다.
OCP(Open Closed Principle) 원칙을 지키기 위해 정의와 구현을 분리해야 한다.
{OCP: 확장에는 열려있고 변경에는 닫혀있어야 한다는 원칙}
# 참고한 사이트
'iOS > Swift 상식' 카테고리의 다른 글
Equatable 이란? (0) | 2023.03.03 |
---|---|
POP(Protocol Oriented Programming) vs OOP(Object Oriented Programming) (0) | 2023.02.21 |
멀티 스레드 구현시 고려해야할 것들 (0) | 2023.02.19 |
Delegates vs Notification 동작 방식 (0) | 2023.02.18 |
KVO(Key Value Observing) 동작 방식 (0) | 2023.02.11 |