ㅤ
안녕하세요 :)
지난번에 객체 지향 프로그래밍에 대한 포스팅을 한적이 있었는데요. (Link)
이번에는 이어서 POP: Protocol Oriented Programming 에 대해 이야기 해보려 합니다.
ㅤ
POP 의 배경
지난번 OOP 포스팅에서 했던 내용중 두 가지를 가져와보려 합니다.
1. OOP 가 나오기 전 까지 절차적 프로그래밍과 구조적 프로그래밍이 있었다.
2. OOP 에는 Inheritance라는 특징이 있는데 이는 고강도의 Coupling 으로, 무분별한 사용은 지양하는 것이 좋다.
라고 말씀 드린 적이 있었죠.
ㅤ
상기 내용과 같이,
1) 절차적 지향과 구조적 지향은 구조화 하는 데에 한계가 있었고
2) OOP는 Inheritance로 인한 고강도의 Coupling으로 인한 복잡성을 해결해야 한다는 문제점이 있었죠.
이런 문제점들의 대안으로 POP 가 탄생하였습니다.
ㅤ
POP 의 장점
우리는 UIViewController 라는 class를 상속하여 우리의 ViewController을 만들어서 사용할 수가 있습니다.
하지만 Swift의 대부분의 라이브러리는 Class 가 아닌 Struct로 되어있죠. 상속이 되지 않는 구조체의 기능을 우리는 쉽게 이용할 수 있는데요.
그 이유는 바로 Protocol 과 Extension 에 있습니다.
Protocol은
상속에 비해 가벼운 강도의 Coupling 이고,
수직구조가 아닌 수평적 구조이며
객체 당 필요한 복수의 Protocol의 기능을 구현할 수 있습니다.
그 결과로 기능의 모듈화(modular programming) 가 명확해지며,
테스트 코드에 용이 합니다.
이러한 장점들이 있는 Protocol을 이용하여 프로그래밍의 설계를 하는 것이
Protocol Oriented Programming 입니다.
ㅤ
ㅤ
참고
resources