프로토콜은 마치 건축물의 '설계도'와 같습니다. 실제 건물을 짓기 전에, 어떤 구조를 가지고 어떤 기능을 해야 할지 미리 약속해두는 것처럼, 프로토콜은 특정 기능을 수행하기 위해 타입이 갖춰야 할 요구사항(규약)을 정의합니다. 클래스, 구조체, 열거형은 이 프로토콜을 '채택(Adopt)'하여 설계도에 명시된 요구사항을 실제로 구현합니다.
프로토콜을 통해 우리는 코드의 유연성과 확장성을 크게 높일 수 있으며, 다형성(Polymorphism)을 구현하는 데 상속보다 더 강력하고 안전한 대안을 제공합니다.