비대한 클래스(fat class)를 본적이 있는가? 비대한 클래스란 메서드를 몇십 몇백개 가지는 클래스를 가리키는 말이다. 대게 시스템 안에 이런 클래스를 두고 싶어하지 않지만, 가끔 피할 수 없는 경우도 있다.
불행히도 '호출하지도 않는' 메서드에 생기는 변경에 시스템은 영향을 받는다..
만약 아래와 같은 강좌 등록 시스템이 있을때, StudentEnrollment (학생 등록)라는 클래스를 사용하는 두 클라이언트가 있다. EnrollmentReportGenerator(등록 상황 보고서 생성자)가 prepareInvoice나 postPaymant 같은 메서드를 사용하지 않으리라는 것은 분명하다. 마찬가지로 AccountsReceivable (받을 수 있는 계좌) 역시 getName이랑 getDate 같은 메서드를 호출하지 않는 다고 가정해보자.

이제 요구사항이 변해서, postPayment 메서드에 새 인자가 추가되거나 할 경우 StudentEnrollment 의 선언을 바꾸는 변경 때문에 EnrollmentReportGenerator도 다시 컴파일하고 배포해야 하는 상황이 생길수도 있다. postPayment 메서드와는 아무 상관이 없는데도 말이다.
이를 아래와 같이 딱 필요한 메서드만 있는 인터페이를 분리하여 제공함으로써 필요하지 않는 메서드로부터 보호할수 있다. 각자가 관심있는(필요한) 메서드들만 있는 인터페이스를 제공받는다. 이렇게 하면 관심없는 메서드로부터 갱신 변경으로부터 시스템을 보호할 수 있다
