그림 4-1에서 볼 수 있듯이, DeliveryDetailsPrinter는 SorterByAddress 객체에 정렬 책임을 직접 위임한다. 이 클래스 디자인을 그대로 유지하면 이 기능을 변경해야 할 때 어려움을 겪을 수 있다. 나중에 인쇄된 세부 정보 순서를 발신인 이름 순으로 새롭게 변경한다고 가정해 보자. SorterByAddress 객체를 새로운 책임을 구현하는 다른 객체로 대체해야 하지만, 정렬 책임을 사용하는 DeliveryDetailsPrinter 객체도 변경해야 한다(그림 4-2).

▲ 그림 4-2 두 객체는 강력하게 결합되어 있으므로 정렬 책임을 변경하려면 이 책임을 사용하는 객체도 변경해야 한다, 더 잘 설계되었다면 정렬 책임을 사용하는 객체를 변경하지 않고도 정렬 책임을 변경할 수 있다