클라이언트 코드의 변경 없이 기능 확장 공연을 설계 할 때 배역만 만들어두고, 배우는 언제든지 유연하게 변경할 수 있도록 만드는 것이 좋은 객체 지향 설계다.
인터페이스를 도입하면 추상화라는 비용이 발생한다. 인터페이스에서 구현 클래스로 2번 가야함 기능을 확장할 가능성이 없다면 구체 클래스를 직접 사용하고, 확장할 필요가 있다면 인터페이스를 도입한다.