객체가 메시지를 선택하는 것이 아니라, 메시지가 객체를 선택하게 해야 한다.
이를 위해선 메시지 중심으로 설계를 해야 한다.
어떤 객체가 필요한지 생각하지 말고 먼저 어떤 메시지가 필요한지 고민하라.
1. 어떤 메시지(What)가 필요한 지 결정.
2. 어떤 객체(Who)가 그 메시지를 수행하기 위해 필요한 지 결정.
수신 가능한 메시지가 모여 객체의 인터페이스를 구성한다.
인터페이스와 구현의 분리는 변경에 대한 안전지대를 만드는 것이다.
안전지대는 객체의 내부인 구현이고, 위험지대는 객체의 외부인 공용 인터페이스이다.
분리할수록 자율성이 증대된다.