[오브젝트: 코드로 이해하는 객체지향 설계/조영호]5장: 책임 할당하기

2025. 11. 14. 23:36·IT서적/오브젝트
728x90

05/ 책임 할당하기

이번 장에서 살펴볼 GRASP패턴은 책임 할당의 어려움을 해결하기 위한 답을 제시해 줄 것이다..

1.책임 주도 설계를 향해

데이터 중심의 설계에서 책임 중심의 설계로 전환하기 위해서는 다음의 두 가지 원칙을 따라야 한다.

  • 데이터보다 행동을 먼저 결정하라
  • 협력이라는 문맥 안에서 책임을 결정하라

책임 주도 설계

  • 시스템이 사용자에게 제공해야 하는 기능인 시스템 책임을 파악한다.
  • 시스템 책임을 더 작은 책임으로 분활한다
  • 분활된 책임을 수행할 수 있는 적절한 객체 또는 역할을 찾아 책임을 할당한다
  • 객체가 책임을 수행하는 도중 다른 객체의 도움이 필요한 경우 이를 책임질 적절한 객체 또는 역할을 찾는다
  • 해당 객체 또는 역할에게 책임을 할당함으로써 두 객체가 협력하게 한다

2.책임 할당을 위한 GRASP패턴

크레이그 라만이 패턴 형식으로 제안한 GRASP패턴
General Responsibility Assignment Software Pattern (일반적인 책임 할당을 위한 소프트웨어 패턴)
객체에게 책임을 할당할 때 지침으로 삼을 수 있는 원칙들의 집합을 패턴 형식으로 정리한 것이다.

  • 도메인 개념에서 출발기
  • 정보 전문가에게 책임을 할당하라 - Information Expert
  • 높은 응집도와 낮은 결합도 - High Cohesion & Low Coupling
  • 창조자에게 객체 생성 책임을 할당하라 - Creator
    아래 조건을 가장 많이 만족하는 객체(A)에게 객체(B) 생성 책임을 할당하라.
    • A는 B 객체를 포함하거나 참조한다.
      = A는 B 객체를 기록한다.
    • A는 B 객체를 긴밀하게 사용한다.
    • A는 B 객체를 초기화하는 데 필요한 데이터를 갖고 있다. (A는 B 객체에 대한 [[정보 전문가 패턴]])

3.구현을 통한 검증

  • 다형성을 통한 분리하기 - Polymorphism
  • 변경으로부터 보호하기 - Protected Variations

4.책임 주도 설계의 대안

  • 래픽터링
    이해하기 쉽고 수정하기 쉬운 소프트웨어로 개선하기 위해 겉으로 보이는 동작은 바꾸지 않은 채 내부 구조를 변경
  • 메서드 응집도
    • 몬스터 메서드. 긴 메서드는 응집도가 낮기 때문에 이해하기도 어렵고 재사용하기도 어려우며 변경하기도 어렵다.
    • 응집도가 낮은 메서드는 로직의 흐름을 이해하기 위해 주석이 필요한 경우가 대부분이다.
728x90
반응형

'IT서적 > 오브젝트' 카테고리의 다른 글

[오브젝트: 코드로 이해하는 객체지향 설계/조영호]7장: 객체 분해  (0) 2025.12.04
[오브젝트: 코드로 이해하는 객체지향 설계/조영호]6장: 메시지와 인터페이스  (0) 2025.11.14
[오브젝트: 코드로 이해하는 객체지향 설계/조영호]4장: 설계 품질과 트레이드오프  (0) 2025.11.14
[오브젝트: 코드로 이해하는 객체지향 설계/조영호]3장: 역할, 책임, 협력  (0) 2025.11.14
[오브젝트: 코드로 이해하는 객체지향 설계/조영호]2장: 객체지향 프로그래밍  (0) 2025.11.14
'IT서적/오브젝트' 카테고리의 다른 글
  • [오브젝트: 코드로 이해하는 객체지향 설계/조영호]7장: 객체 분해
  • [오브젝트: 코드로 이해하는 객체지향 설계/조영호]6장: 메시지와 인터페이스
  • [오브젝트: 코드로 이해하는 객체지향 설계/조영호]4장: 설계 품질과 트레이드오프
  • [오브젝트: 코드로 이해하는 객체지향 설계/조영호]3장: 역할, 책임, 협력
lakedata
lakedata
lakedata 님의 블로그 입니다.
  • lakedata
    lakedata 님의 블로그
    lakedata
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • cs (82)
        • dev (28)
        • sec (29)
        • ops (25)
      • 자격증 (32)
        • 정보처리기사 (20)
        • 정보보안기사 (1)
        • aws dva (6)
        • aws dop (2)
      • IT서적 (27)
        • 클린아키텍처 (10)
        • 객체지향의사실과오해 (7)
        • 오브젝트 (10)
      • 코테 (42)
        • 알고리즘 (20)
        • 백준 (13)
        • 프로그래머스 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    CS
    Java
    SQL
    Spring
    docker
    Security
    AWS
  • 최근 댓글

  • 최근 글

  • 반응형
    250x250
  • hELLO· Designed By정상우.v4.10.3
lakedata
[오브젝트: 코드로 이해하는 객체지향 설계/조영호]5장: 책임 할당하기
상단으로

티스토리툴바