오브젝트

본 책이 전달하는 메세지를 전부 다 이해하기엔 아직 이른 감이 있지만, 아주 조금 개발이란걸 하다보니 설득력이 느껴지는 부분이 꽤나 많았다. (최소 한번은 더 읽어 봐야겠다.) 이를테면, 객체들은 자율적인 존재, 메시지를 통한 객체들간의 협력 객체들을 자율적 존재인 공동체로 이러한 객체들은 타 객체들과 협력하는 사회적 존재이다. 책은 크게 역할, 책임, 협력 에 대해 얘기하고 있고 위에 언급한 협력을 포함한 역할과 책임 또한 어찌보면 우리 사회라는 Context 그 자체를 담고있는게 아닌가 싶다. 객체의 행동은 결국에 객체가 참여하고있는 협력을 뜻 하고. 협력이 바뀐다면 당연시 객체가 제공해야하는 행동 역시 바뀌어야한다. 역할은 다른 것으로 교체할 수 있는 책임의 집합이며, 책임이란 객체에 의해 정의되는 응집도 있는 행위의 집합이다.

P75. 객체지향 시스템은 자율적인 객체들의 공동체다. 객체는 고립된 존재가 아니라 시스템의 기능이라는 더 큰 목표를 달성하기 위해 다른 객체와 협력하는 사회적인 존재다. 협력은 객체지향의 세계에서 기능을 구현할 수 있는 유일한 방법이다. 두 객체 사이의 협력은 하나의 객체가 다른 객체에게 도움을 요청할 때 시작된다. 메시지 전송(message sending)은 객체 사이의 협력을 위해 사용할 수 있는 유일한 커뮤니케이션 수단이다. 객체는 다른 객체의 상세한 내부 구현에 직접 접근할 수 없기 때문에 오직 메시지 전송을 통해서만 자신의 요청을 전달할 수 있다.

P292 PURE FABRICATION 패턴 객체지햔 설계는 문제 도메인 상의 개념을 소프트웨어 객체로 구현하고 책임을 할당한다. 하지만 만약 도메인 객체에 책임을 할당할 경우 HIGH CONHESION, LOW COUPLING, 재사용성 등의 목적을 위반한다면 어떻게 해야 하는가? 문제 도메인 개념을 표현하지 않는, 인위적으로 또는 편의상 만든 클래스에 매우 응집된 책임을 할당하라. 이들 클래스는 문제 도메인 상에는 존재하지 않지만 순수하게 전체 설계의 품질을 높이기 위해 설계자의 임의에 따라 추가한 상상 속의 가공물이다. PURE FABRICATION은 INFORMATION EXPORT 패턴에 따라 책임을 할당한 결과가 바람직하지 않을 경우 대안으로 사용한다. 어떤 객체가 책임을 수행하는 데 필요한 많은 정보를 가졌지만 해당 책임을 할당할 경우 응집도가 낮아지고 결합도가 높아진다면 가공의 객체를 추가해서 책임을 옮기는 것을 고민하라. 순수한 가공물(pure fabrication)이라는 표현은 적절한 대안이 없을 때 사람들이 창조적인 무언가를 만들어낸다는 것을 의미하는 관용적인 표현이다

You might also like...

What do you think?