19.과잉 중개 메서드 제거 Remove Middle Man

대리 객체 은혜(Hide Delegate)와 과잉 중개 메서드 제거(Remove Middle Man)은 반대 개념

어떤 클래스의 인터페이스가 절반도 넘는 메서드가 기능을 다른 클래스에 위임하고 있다면 원리가 구현된 객체에 직접 접근하는 방식으로 수정한다. 모든 위임을 추적할 필요없이 기능을 확장할 수 있다.

클래스가 간단한 위임을 너무 많이 하고 있는 경우에는 클라이언트가 대리객체를 직접 호출하도록 하라.

클라이언트가 대리인에게 직접 호출하도록 합니다.
inverse of Hide Delegate

클래스 다이어그램

RomoveMiddleMan.png

※참고 : https://refactoring.com/catalog/removeMiddleMan.html

Client.obj().GetManager();

위는 Hide Delegate 리팩토링 방식으로 다시 Department 대리 객체를 살리면 아래와 같습니다.

Client.obj().GetDepartment().GetManager();

일부 클라이언트에서 위임메서드를 그대로 사용하고 일부 클라이언트에서는 대리 객체를 사용할 수도 있을 수 있으므로 위임 메서드를 그대로 둬야 할 경우도 있음.