객체지향과 프로토콜지향의 차이점
- class 사용
- 상속을 통해 계층화 - 하나의 객체에 단일 상속만 가능
- override로 메소드 추가 및 대체 가능
- 참조 타입 (Reference Type) - 메모리 공유로 적은 메모리 사용
- 멀티 스레드/프로세스에 약하다는 단점이 있음
- struct, enum 사용
- protocol로 동일한 속성을 부여 가능 - 하나의 객체에 여러 protocol 부여 가능함
- extension으로 동일한 메소드 구현 가능
- 값 타입 (Value Type) - 복제하기 때문에 많은 메모리 사용 -> 지연 복제로 극복 가능함
- 멀티 스레드/프로세스에 강점이 있음
주의할 점!!!
객체지향, 프로토콜지향 모두 만능은 아님
코드를 짤 때, 우리가 사용하는 객체가 Class 기반인지, Struct 기반인지 반드시 참고해야 함