책임의 자율성이 협력의 품질을 결정한다

객체지향의 사실과 오해5장 책임과 메시지의 마지막 부분인 책임의 자율성이 협력의 품질을 결정한다 요약 입니다.

더 나은 설계란?

  • 어떤 협력이 다른 협력보다 이해하기 쉽고 변경에 유연하다고 표현
  • 객체의 책임이 자율적일수록 협력이 이해하기 쉬워지고 유연하게 변경 가능
  • 결과적으로, 책임이 얼마나 자율적인지가 전체적인 협력의 설계 품질을 결정
  1. 자율적인 책임은 협력을 단순하게 만든다
    • 자율적인 책임은 세부적인 사항들을 무시하고 의도를 드러내는 하나의 문장으로 표현함으로써 협력을 단순화
    • 책임이 적절하게 추상화
  2. 자율적인 책임은 모자 장수의 외부와 내부를 명확하게 분리한다
    • 협력의 양상을 두 가지 관점으로 분리
    • 왕이 모자 장수를 바라보는 외부 관점
    • 모자 장수가 책임을 수행하는 방법을 표현하는 내부 관점
    • 협력에 참여하기 위해 외부에 노출하는 부분과 책임을 수행하기 위해 내부적으로 선택하는 방법을 명확하게 구분
    • 요청하는 객체가 몰라도 되는 사적인 부분이 객체 내부로 캡슐화되기 때문에 인터페이스와 구현이 분리
  3. 책임이 자율적일 경우 책임을 수행하는 내부적인 방법을 변경하더라도 외부에 영향을 미치지 않는다.
    • 책임이 자율적일수록 협력에 의해 수정돼야 하는 범위가 좁아지고 명확
    • 변경의 파급효과가 객체 내부로 캡슐화되기 때문에 두 객체 간의 결합도가 감소
  4. 자율적인 책임은 협력의 대상을 다양하게 선택할 수 있는 유연성을 제공한다
    • 책임이 자율적일수록 협력이 좀 더 유연해지고 다양한 문맥에서 재활용
    • 설계가 유연해지고 재사용성이 높아진다
  5. 객체가 수행하는 책임들이 자율적일수록 객체의 역할을 이해하기 쉬워진다.
    • 객체가 수행하는 책임들이 자율적이면 자율적일수록 객체의 존재 이유를 명확하게 표현
    • 객체는 동일한 목적을 달성하는 강하게 연결된 책임으로 구성
    • 책임이 자율적일수록 객체의 응집도를 높은 상태로 유지하는 것이 용이

자율적인 책임으로 인한 장점

  • 적절하게 추상화
  • 응집도가 높아지고
  • 결합도가 낮아지고
  • 캡슐화가 증진
  • 인터페이스와 구현이 명확히 분리
  • 설계의 유연성과 재사용성이 향상

객체지향의 강력함을 누리기 위한 출발점은 책임을 자율적으로 만드는 것이다. 그리고 이것은 개발자가 선택하는 메시지에 따라 달라진다.

(번역) Spring @ControllerAdvice 와 @ExceptionHandler Spring MVC Test Standalone

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×