A 라는 클래스를 이용해서 직접 사용해서 코드를 모두 구현했는데 기능의 변화로 B 라는 클래스가 추가로 생겼다고 치면
사용하는 쪽에서 모든 클래스를 A 에서 B 로 바꾸는 작업이 필요하지만
I 라는 인터페이스를 사용해서 I 에 틀을 기반으로 A 클래스를 만들었고, B 클래스 역시 I 기반으로 코드를 작성하였다면
사용하는 쪽에서 코드를 수정할 부분이 이론상으로는 없습니다.
(물론 I 인터페이스가 수정될 가능성이 높긴 하죠 +_+ 뭐 결론적으로는 그놈이 그놈이 될 가능성이 높긴 합니다... =_ = ㅋ)