4장 역할, 책임, 협력
🚀 우리 모두를 합친 것보다 더 현명한 사람은 없다.
협력의 중요성을 배우는 페이지였다.
저자가 어떤 이야기를 하려고하는지 알 수 있었고 협력에 필요한 역할을 알 수 있었다.
서로 연관되어 있는 생태계에서 올바른 어플리케이션을 추구하는 모습이 객체들이 향하는 방향성이라 느꼈다.
🎯 1. 협력
개별적인 객체의 행동이나 상태가 아니라 객체들 간의 협력에 집중하라.
객체들의 협력을 통해 어플리케이션이 완성된다. 어떠한 기능도 협력이 필요하게 되고 그 협력을 완성시키기 위해
객체들은 각각의 책임을 가지게 된다.
객체들이 갖는다기보단 그 '역할'이 갖게 된다.
🎯 2. 역할
객체는 동적이며 대체 가능성이 있다. 다른 객체가 와도 책임이 같다면 어플리케이션에 문제는 없다.
역할로 정의된 객체는 그 안에서 대체가 가능하다. 요청과 응답은 협력에 참여하는 객체가 수행할 책임을 정의하기 때문에 역할이 올바르다면
어플리케이션에 대한 문제는, 즉 협력으로 만들어지는 결과는 문제가 없을 것이다.
🎯 3. 책임
객체의 책임은 '무엇을 아는가' 와 '무엇을 할 수 있는가' 로 구성된다. 객체와 책임이 제자리를 잡은 후 책임을 어떻게 구현할 것인가를 고민해보자.
명확한 책임이 어플리케이션의 미래를 결정짓는다.
객체지향 설계는 협력에 참여하기 위해 어떤 객체가 어떤 책임을 수행해야 하고 어떤 객체로부터 메시지를 수신할 것인지를 결정하는 것으로부터 시작된다.
어떤 클래스가 필요하고 어떤 메서드를 포함해야 하는지를 결정하는 것은 책임과 메시지에 대한 대략적인 윤곽을 잡은 후에 시작해도 늦지 않다.
자리는 해당 역할을 수행할 수 있는 어떤 객체라도 대신할 수 있다. 역할을 이용해 협력을 추상화 할 수 있다.
![[객체지향의 사실과 오해] 4장 역할, 책임, 협력](/_next/image?url=https%3A%2F%2Fwww.notion.so%2Fimage%2Fattachment%253A6ff2a648-3cc9-402c-861b-d7bb9f47b3a3%253A%25E1%2584%2580%25E1%2585%25A2%25E1%2586%25A8%25E1%2584%2589%25E1%2585%25A1%25E1%2584%258B%25E1%2585%25A9.jpeg%3Ftable%3Dblock%26id%3D25ea12d0-8f8e-8002-95f7-fcef6f2e7f15%26cache%3Dv2&w=1920&q=75)