본문 바로가기

swift protocol2

[Swift] Chapter 23. 프로토콜 지향 프로그래밍 23장 - 프로토콜 지향 프로그래밍 스위프트의 표준 라이브러리에서 타입과 관련된 것을 살펴보면 대부분이 구조체로 구현되어 있다. 구조체는 상속이 되지 않지만 프로토콜과 익스텐션, 제네릭 등으로 다양항 공통 기능을 갖도록 구현할 수 있다. 23.1 프로토콜 초기구현 익스텐션은 기존 타입의 기능을 확장하며, 프로토콜은 프로토콜을 채택한 타입이 원하는 기능을 강제로 구현한다. 그런데 특정 프로토콜을 정의하고 여러 타입에서 이 프로토콜을 준수하게 만들어 타입마다 똑같은 메서드, 프로퍼티, 서브스크립트 등을 구현해야 한다면 많은 코드를 중복 사용해야 하며, 유지보수는 힘들어 질 것이다. 이때 필요한 게 바로 익스텐션과 프로토콜의 결합이다. [코드 20-5]에서 중복 코드를 제거해보자. /* 코드 23-1. 익스텐.. 2021. 10. 13.
[Swift] Chapter 20. 프로토콜 20.1 프로포콜이란 프로토콜은 특정 역할을 하기 위한 메서드, 프로퍼티, 기타 요구사항 등의 청사진을 정의한다. 어떤 프로토콜의 요구사항을 모두 따르는 타입은 '해당 프로토콜을 준수한다'고 표현한다. 타입에서 프로토콜의 요구사항을 충족시키려면 프로토콜이 제시하는 청사진의 기능을 모두 구현해야 한다. 즉, 프로토콜은 정의를 하고 제시를 할 뿐이지 스스로 기능을 구현하지는 않는다. 20.2 프로토콜 채택 protocol 키워드를 사용하여 정의한다. protocol 프로토콜 이름 { 프로토콜 정의 } 구조체, 클래스, 열거형 등에서 프로토콜을 채택하려면 타입 이름 뒤에 콜론(:)을 붙여준 후 채택할 프로토콜 이름을 쉼표(,)로 구분하여 명시해준다. /* 코드 20-1. 타입의 프로토콜 채택 */ struct.. 2021. 10. 11.