Swift

Protocol Oriented Programming

GREEN.1229 2021. 1. 28. 20:02

안녕하세요. 그린입니다!

이번 포스팅에서는 Protocol Oriented Programming (POP), 프로토콜 지향 프로그래밍에 대한 개념을 알아보겠습니다.

 

-. 프로토콜이란?

 : 특정 기능을 수행하기 위한 메서드/프로퍼티/요구사항 등등의 청사진이라고 생각하면된다.

 : 프로토콜을 구현한것을 채택하고 준수한다고 표현한다.

 

-. POP가 나타난 이유

 : 기존에는 객체 지향 프로그래밍에서 Class 상속을 통해 기능을 구현하였다.

 -> 참조 타입으로 다중 스레드 환경에서 무분별 상속 시 기존 데이터가 변경되기에 불안전

 -> Struct / Enum 타입은 값 타입으로 상속이 불가

 -> 결국 Protocol과 Extension이 발표되어 해당 두개를 가지고 상속 기능이 생김!!

 -> 스위프트 버전 2.0 발표 시 새로 나온 개념

 

-. 장점

 1) 가벼움

 2) 보안성

 3) 값 타입 상속 (참조 추적에는 비용이 값 타입 보다 많이 발생)

 4) 다중 상속 가능

 5) 수평적인 기능 확장 (클래스는 수직적인 상속)

 6) 제네릭의 활용 (자료형의 타입 구속을 받지 않는다)

 7) 기능의 모듈화

 

-. 구성

 : Procotol Default Implementation (프로토콜 초기 구현)

 -> 메서드/ 프로퍼티가 추후 채택되어 구현해야할 사항을 모음

 : Extension (확장)

 -> 초기 구현을 따로 확장하여 구현을 담은 구현부

 -> 프로토콜을 채택한 구조체에서 별도로 다시 중복하여 구현할 필요가 없음 (필요에 의해 재정의하여 구현해도됨)

 

-. 프로토콜/제네릭

 : Generic과 AssociatedType을 적용해 재사용성 증대가 가능하다.

 

간단하게 프로토콜 지향 프로그래밍의 개념에 대해 알아보았습니다.

음.. 객체 지향 프로그래밍만 하다가 프로토콜이란게 낯설지만 좀 더 학습해봅시다!!

감사합니다🎃

 

[참고자료]

https://developer.apple.com/videos/play/wwdc2015/408/

https://medium.com/@Alpaca_iOSStudy/protocol-oriented-programming-pop-2db7d4d02747

https://m.blog.naver.com/PostView.nhn?blogId=jdub7138&logNo=220968251035&proxyReferer=https:%2F%2Fwww.google.co.kr%2F

https://blog.yagom.net/531/