선생님, 개발을 잘하고 싶어요.

[오브젝트] 챕터 14 - 일관성 있는 협력 본문

일상/책 리뷰

[오브젝트] 챕터 14 - 일관성 있는 협력

알고싶은 승민 2022. 3. 23. 08:00

지금까지 읽은 오브젝트의 모든 내용을 총 망라한 챕터입니다.

전화요금 설계를 일관성 있는 협력으로 구성하며 지금까지 설명한 모든 개념을 총 동원하고 리마인드 시킵니다.

역할, 책임, 협력에서 시작해서 의존성 역전 법칙, 개방 폐쇠 원칙, 리스코프 치환 원칙을 모두 활용하고 상기시킵니다.


  • 도입일관성 있는 협력 패턴을 적용하면 코드가 이해하기 쉽고 직관적이며 유연해질 것이다.
  • 객체지향의 목표는 적절한 책임을 수행하는 객체들의 협력을 기반으로 결합도가 낮고 재사용 가능한 코드 구조를 창조하는 것이다.
  • 설계에 일관성 부여하기
    • 객체 지향에서 기능을 구현해야 한다?
      1. 기능을 위해 필요한 책임을 식별한다.
      2. 책임을 할당할 적절한 객체를 선택한다.
    • 다양한 설계 경험을 익혀라.
    • 디자인 패턴을 학습하고 변경이라는 문맥 안에서 디자인 패턴을 적용해 봐라.
    • 훌륭한 구조를 설계하기 위한 기본 지침
      • 변하는 개념을 변하지 않는 개념으로부터 분리하라.
      • 변하는 개념을 캡슐화하라.
    • 코드 관점에서 생각하면...
      • 조건에 따라 분기되는 로직 → 개별적인 변경
    • 객체 지향에서는 조건 로직을 객체 사이의 이동으로 바꾼다.
      • 조건 로직 → 함수 호출, 컴파일 타임에 실행 흐름 설계 완료, 런타임에 동작 수정 못함
      • 객체 사이의 메시지 → 메시지 전송, 동적 바인딩, 런타임에 실제 객체의 메서드를 탐색 및 호출
    • 객체지향적인 코드는 조건을 판단하지 않는다. 단지 다음 객체로 이동할 뿐...
    • 변경의 이유와 주기를 기준으로 클래스를 분리해라.
    • 단일 책임 원칙(SRP)을 따르도록 클래스를 분리해야 한다는 뜻.
    • 변하는 개념을 별도의 서브타입으로 분리한 후 이 서브타입들을 클라이언트로부터 캡슐화한 것
    • 캡슐화란 변하는 어떤 것이든 감추는 것 (코드 수정의 파급효과를 제어하는 모든 기법)
      • 데이터 캡슐화
      • 메서드 캡슐화
      • 객체 캡슐화: 합성
      • 서브타입 갭슐화: 다형성의 기반
Comments