계약 선언
필요한 기능의 모양만 먼저 정의해 구현 세부사항을 숨긴다.
구현 클래스가 달라져도 소비자는 인터페이스가 약속한 메서드와 속성만 믿고 코드를 작성한다.
필요한 기능의 모양만 먼저 정의해 구현 세부사항을 숨긴다.
여러 클래스가 같은 인터페이스를 구현하면 같은 호출 코드로 교체 가능해진다.
상위 로직이 구체 클래스가 아니라 인터페이스에 기대도록 설계한다.
인터페이스는 타입 문법 이상의 설계 도구다. 바뀔 수 있는 구현과 오래 유지할 사용 계약을 분리한다.