Notice
Recent Posts
Recent Comments
Link
관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] POP(Protocol Oriented Programming) 프로토콜 지향 프로그래밍 본문

iOS 기본 (swift)

[iOS - swift] POP(Protocol Oriented Programming) 프로토콜 지향 프로그래밍

jake-kim 2020. 12. 23. 22:08

POP가 탄생한 배경

  • 절차지향은 모듈화가 힘든 단점
  • OOP는 모듈화는 용이하지만 상속의 상속과 같은 복잡도가 늘어나면서 결국에 기능 확장할 때 side effect가 생길 확률 존재
  • POP는 수평적 확장: 상속을 받지 않고 공통 기능 구현 가능
  • OOP에서 클래스를 상속하려면 오직 class타입(reference type)에만 되지만, POP는 enum, struct, class모두 확장 가능

POP의 장점

  • 기능의 모듈화가 명확 (강제 구현하게끔 지정)
  • 테스트 코드에 용이
    (Builder클래스와 같은 곳에서 프로토콜 타입이고 주입해주는 쪽에서 해당 프로토콜을 구현한 부분을 주입해주면 주입해주는 쪽에서 테스트 코드로 새로운 구현부를 주입하여 다양한 테스트를 사용할 수 있음)
  • Protocol Default Implementation 존재

Protocol Default Implementation

  • extension으로 protocol에 정의된 것들을 미리 구현함으로서 해당 protocol을 구현하는 대상들이 코드의 중복을 피할 수 있게 해줌

POP 코딩

  • Protocol 정의: protocol이름은 "-able"과 같이 명칭
  • associatedtype: 클래스에서 사용하는 Generic타입과 같이<T>, protocol에서 쓰는 Generic타입 명시
  • protocol 구현부에서는 associatedtype으로 지정한 부분을 추론할 수 있게만 작성하면 구현 완료
Comments