존 호프만의 Protocol-Oriented Programming with Swift(스위프트 프로토콜지향 프로그래밍) 4장 읽으며 메모 (요약글 아님)
객체지향에서 프로토콜 컴포지션이 클래스 상속 구조보다 유용한 케이스를 설명하기 적합한 예시가 책에 나와있어서 나중에 써먹으려고 메모. 되게 많을 것 같지만 생각보다 확 와닿고 쉬운 예제가 금방 떠오르지가 않는다. 그럴 때 이 예시를 들면 좋을 것 같다.
클래스 - 한 번에 하나의 부모만 상속이 가능함. (실제 세계에서, 나를 낳아준 부모가 중복이 될 수 없는 것처럼)
프로토콜 컴포지션 - 여러 개의 작은 프로토콜들을 채용하여 내가 필요한 것만 선별적으로 취할 수 있다. 따라서 비대한 슈퍼클래스의 생성 / 서브클래스가 쓸데없는 기능까지 다 안고 있을 필요가 없어짐. 불필요한 요구사항은 따르지 않으면 된다.
<예시> 만약 운동선수 모델을 클래스 상속 구조로 설계한다면?
이 상속 구조의 문제점: 아마추어 축구선수와 프로 축구선수 둘 다 축구선수이다. 축구에 관련된 코드가 겹치게 된다. (중복 코드 발생) > 중복을 해결하려면? 상속 구조로 풀게 되면, Athlete 클래스에 전부 때려넣어야 한다. (비추천)
이런 불편을 프로토콜 컴포지션으로 해결할 수 있다.
믹스 앤 매치 가능. 자신에게 필요한 프로토콜만 채용하면 된다.
'개발서적 읽으며 끄적끄적 > POP with Swift' 카테고리의 다른 글
프로토콜 확장으로 기능을 추가하기 (0) | 2020.01.01 |
---|---|
스위프트에서의 '타입' (0) | 2019.12.26 |
객체지향 프로그래밍과 프로토콜지향 프로그래밍 (feat. Swift) (2) | 2019.11.06 |