객체지향이 유연한 설계와 재사용성을 높일 수 있는 이유는 협력을 수행하는 방법으로 메시지를 선택하기 때문이다. 메시지는 협력의 문맥에서 객체의 내부와 외부를 구분한다. 따라서 객체는 자율적인 책임을 지니게 된다. 캡슐화, 다형성, 낮은 결합도와 높은 응집도 등의 장점을 자율적인 책임에서 얻을 수 있다. 따라서 객체지향 시스템을 설계할 때는 협력의 문맥에서 메시지(what)을 결정하고 해당 책임을 수행할 객체(who)를 정한다. 객체를 설계할 때도 외부에 오픈할 메시지를 담는 인터페이스와 내부 구현(상태, 행동)을 구분해야 한다.
자율적인 책임의 객체가 어떻게 해야 하는가가 아니라 무엇을 해야 하는가를 설명한다. 자율적인 책임은 객체가 협력을 위해 무엇을 해야 하는지 결정하지만 어떻게 해야 하는지는 결정하지 않는다. 책임을 수행할 방법은 객체가 자율적으로 선택한다.
메시지이다. 다형성은 송신자와 수신자 간의 객체 타입에 대한 결합도를 메시지에 대한 결합도를 낮춤으로써 달성된다.
협력이라는 문맥에서 개별 객체에 초점을 맞추기 위함이다. 협력 관계 속에서 다른 객체에게 무엇을 제공해야 하고 다른 객체로부터 무엇을 얻어야 하는가라는 관점에서 접근할 때만 훌륭한 책임을 수확할 수 있다.
송신자는 수신자가 어떤 객체인지는 모르지만 자신이 전송한 메시지를 잘 처리할 것이라는 것을 믿고 메시지를 전송한다. 메시지는 어떻게 보다는 무엇을 해야 하는지를 요청한다. 이러한 스타일은 객체를 자율적으로 만들고 캡슐화를 보장하며 결합도를 낮게 유지시킨다.
공용 인터페이스를 구성하는 것은 객체가 외부로부터 수신할 수 있는 메시지의 목록이다. 책임은 객체가 메시지를 수신했을 때 수행해야 하는 객체의 행동이다.
소프트웨어의 변경으로 인한 파급효과을 줄이기 위함이다. 변경해도 무방한 안전 지대를 객체 내부의 구현으로 두고, 변경했을 경우 외부에 영향을 미치는 위험 지대를 구분한다. 객체 외부에 영향을 미치는 변경은 객체의 공용 인터페이스를 수정한다.