Interface
과니
: 유연하게 설계하기
­ Documenting Software Architectures
“두 개의 독립적인 실체가 만나서 서로 상호
작용하거나 통신하는 경계지점을 말한다.”
Question ?
(추상클래스 vs 인터페이스) 상속 후 오버라이드



연관성
연관성
A class
B Subclass C Subclass
<<I interface>>
E Subclass
D class
사물이나 현상간에 관련있는 특성이나 성질
연관성
A class
B Subclass C Subclass
<<I interface>>
E Subclass
D class
구현으로 묶여있어 결합도가 높음
연관성
A class
B Subclass C Subclass
<<I interface>>
E Subclass
D class
구현으로 묶여있지 않아 결합도가 낮음
수직(클래스) 상속은 클래스간에 결합도가 높아 유연한 설계가

어려움
수직상속: 선천성 성질
수평상속: 후천성 능력
수평(인터페이스) 상속은 구현이 결합되어 있지 않아 보다 유연한

설계가 가능
Equatable
Comparable
출신이 아닌 능력 중심의 프로그래밍 유토피아
“스위프트 짜실 줄 아는 분”
­ introduced in 1994 by the GoF
“program to an interface not an
implementation.”
­ Large-Scale C++ Software Design
“A protocol class is a nearly perfect
insulator.”
유연성
새로 생겼거나 혹은 변화가 생긴 상황에 대응,순응할수
있는 성질
좋은 인터페이스
잘 사용 되는 인터페이스
인터페이스 정보로만 사용
Encodable, Decodable
JSONEncoder / JSONDecoder
인터페이스 정보로만 사용
Equatable
Custom
Swift Protocol
•Protocol default implementation
•Protocol extension
•Value Type
실제 알아야 하는 것
오늘 발표 내용이해된 것

Interface: 유연한 설계하기