- 책임의 자율성이 협력의 품질을 결정2023년 02월 21일
- starryeye
- 작성자
- 2023.02.21.:42
객체의 책임이 자율적일수록 협력이 이해하기 쉬워지고 유연하게 변경할 수 있게 된다.
결과적으로 책임이 얼마나 자율적인지가 전체적인 협력의 설계 품질을 결정하게 된다.
근거1.
자율적인 책임은 협력을 단순하게 만든다.
자율적인 책임은 세부적인 사항들을 무시하고 의도를 드러내는 하나의 문장으로 표현함으로써 협력을 단순하게 만든다.
객체지향 커뮤니티의 전문 용어로 표현하자면 책임이 적절하게 추상화된다.
"왕이 원하는 것은 단순히 '증언'하는 것 뿐이다."
근거2.
자율적인 책임은 객체의 외부와 내부를 명확하게 분리한다.
책임이 자율적이기 때문에 두 객체간 약속된 추상화된 책임만 완수할 수 있으면 어떤 방법을 선택할지는 전적으로 요청 받는 객체의 권한이다.
객체지향 커뮤니티의 전문 용어로 표현하자면 요청하는 객체가 몰라도 되는 사적인 부분이 객체 내부로 캡슐화되기 때문에 인터페이스와 구현이 분리된다.
"왕과 모자 장수 사이에서 이뤄지는 협력의 양상을 두 가지 관점으로 분리한다. 첫 번째 관점은 왕이 모자 장수를 바라보는 외부 관점이다. 두 번째는 모자 장수가 책임을 수행하는 방법을 표현하는 내부 관점이다."
근거3.
책임이 자율적일 경우 책임을 수행하는 내부적인 방법을 변경하더라도 외부에 영향을 미치지 않는다.
책임이 자율적일수록 변경에 의해 수정돼야 하는 범위가 좁아지고 명확해진다.
객체지향 커뮤니티의 전문 용어로 표현하자면 변경의 파급효과가 객체 내부로 캡슐화되기 때문에 두 객체 간의 결합도가 낮아진다.
"왕은 모자 장수가 책임을 수행하는 방법에는 관심이 없을 뿐만 아니라 아예 볼 수 조차 없다는 사실을 기억하라"
"모자 장수가 '증언하다'라는 책임을 가진 첫 번째 협력에서 왕은 모자 장수가 증언한다는 사실만 알고 있기 때문에 모자 장수가 증언하는 방법을 변경하더라도 왕에게는 어떤 영향도 미치지 않을 것이다."
근거4.
자율적인 책임은 협력의 대상을 다양하게 선택할 수 있는 유연성을 제공한다.
책임이 자율적일수록 협력이 좀 더 유연해지고 다양한 문맥에서 재활용될 수 있다.
객체지향 커뮤니티의 전문 용어로 표현하자면 설계가 유연해지고 재사용성이 높아진다.
"왕의 입장에서 '증언하라'라는 책임을 수행할 수 있다면 모자 장수가 아닌 어떤 사람이 요청을 수신하더라도 재판을 진행하는 데 문제가 없다"
근거5.
객체가 수행하는 책임들이 자율적일수록 객체의 역할을 이해하기 쉬워진다.
객체가 수행하는 책임들이 자율적이면 자율적일수록 객체의 존재 이유를 명확하게 표현할 수 있다. 객체는 동일한 목적을 달성하는 강하게 연관된 책임으로 구성되기 때문이다.
객체지향 커뮤니티의 전문 용어로 표현하자면 책임이 자율적일수록 객체의 응집도를 높은 상태로 유지하기가 쉬워진다.
"여기서 눈여겨봐야 할 부분은 '증인석에 입장하다'와 '증언하다' 두 가지 책임이 모여 재판이라는 협력 안에서 모자 장수가 수행하는 역할을 명확하게 전달한다는 사실이다."
"두 책임은 모자 장수가 '증인'이라는 역할을 수행한다는 사실을 설명하기에 필요한 동시에 충분하다."
결론.
책임이 자율적일수록..
추상화되고
응집도는 높아지고
결합도는 낮아지고
캡슐화는 증진되고
인터페이스와 구현이 명확히 분리되고
설계의 유연성과 재사용성이 향상된다.
"객체지향의 사실과 오해" 책에서 발췌
'OOP' 카테고리의 다른 글
기능과 구조의 통합 (feat. 책임-주도 설계) (0) 2023.02.23 도메인 모델 (0) 2023.02.23 기능과 구조 설계 (0) 2023.02.23 책임, 메세지 그리고 인터페이스 (0) 2023.02.13 다음글이전글이전 글이 없습니다.댓글