[Swift] POP: Protocol Oriented Programming

Jay Lee
3 min readJul 4, 2021

안녕하세요 :)

지난번에 객체 지향 프로그래밍에 대한 포스팅을 한적이 있었는데요. (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

--

--