다음 그림은 추상화로 이 클래스 설계를 분리하는 방법을 보여 준다. CommentRepository와 CommentNotificationProxy를 클래스로 설계하는 대신 기능을 정의하기 위해 이 클래스들을 구현할 수 있는 인터페이스로 설계한다.

▲ 그림 4-6 CommentService 객체는 CommentRepository 및 CommentNotificationProxy 인터페이스가 제공하는 추상화에 의존한다, DBCommentRepository와 EmailCommentNotificationProxy 클래스는 이 인터페이스를 구현한다, 이런 설계는 ‘댓글 게시’ 사용 사례의 구현을 의존성에서 분리하고 향후 개발에서 애플리케이션을 쉽게 변경할 수 있도록 한다