인터페이스는 구현보다 먼저 소비자가 믿을 계약을 세운다

구현 클래스가 바뀌어도 소비자는 인터페이스가 약속한 메서드와 속성만 의존한다.

1
Contract
필요한 기능의 모양만 먼저 정의
2
Implementation
여러 클래스가 같은 계약을 구현
3
Consumer
구체 클래스가 아니라 인터페이스에 의존
4
Swap
호출 코드를 바꾸지 않고 구현 교체
점검기준
다형성같은 호출 코드로 여러 구현을 교체
DIP상위 로직이 구체 구현보다 추상 계약에 의존
경계바뀔 구현과 오래 유지할 사용 계약을 분리

핵심 인터페이스는 타입 문법 이상의 설계 도구다.