-
Protocol Oriented ProgrammingSwift 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
'Swift' 카테고리의 다른 글
ARC 심화 (0) 2021.02.17 Type Casting (0) 2021.01.29 타입 메서드 (0) 2021.01.27 온도 표현단위와 변환 방법 (0) 2021.01.19 CFAbsolute TimeGetCurrent (0) 2021.01.15