일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 오브젝트
- 독서일지
- docker
- DesignPattern
- JavaScript
- 디자인패턴
- 성수핫플
- 성수볼거리
- 직장인점심
- Linux
- 개발자
- 직장인
- 객체지향
- IntelliJ
- 주니어개발자
- 책너두
- Java
- 헤드퍼스트
- 코딩
- 상속
- JAVA개발자
- 독서
- 성수
- 책읽기
- 성수직장인
- 객체지향프로그래밍
- 헤드퍼스트디자인패턴
- 깨끗한코드
- 성수맛집
- 클린코드
- Today
- Total
닭발개발
[오브젝트] 38일차. 483-493pg | 일관성 있는 협력 본문
[오브젝트] 38일차. 483-493pg | 일관성 있는 협력
D269 2023. 8. 16. 12:59
38일차.
오브젝트: 코드로 이해하는 객체지향 설계[7주차_화요일]
483-493pg
#요약
**Chapter 14. 일관성 있는 협력**
01. 핸드폰 과금 시스템 변경하기
1) 기본 정책 확장
2) 고정요금 방식 구현하기
3) 시간대별 방식 구현하기
4) 요일별 방식 구현하기
5) 구간별 방식 구현하기
- 현재 구현의 가장 큰 문제는 이 클래스들이 유사한 문제를 해결하고 있음에도 불구하고 설계에 일관성이 없다는 것.
- 이 클래스들은 기본 정책을 구현한다는 공통의 목적이 있지만 정책을 구현하는 방식은 완전히 다르다.
- 개념적으로는 연관돼 있지만 구현 방식에 있어서는 완전히 제각각
- 유사한 기능을 서로 다른 방식으로 구현해서는 안된다.
- 유사한 기능은 유사한 방식으로 구현해야 한다.
02. 설계에 일관성 부여하기.
- 일관성 있는 설계를 만드는 데 가장 훌륭한 조언은 다양한 설계 경험을 익히라는 것 그리고 널리 알려진 디자인 패턴을 학습하고 변경이라는 문맥 안에서 디자인 패턴을 적용해 보라는 것.
- 협력을 일관성 있게 만들기 위해 1. 변하는 개념을 변하지 않는 개념으로부터 분리하라. 2. 변하는 개념을 캡슐화하라.
1) 조건 로직 대 객체 탐색
- 절차지향 프로그램에서 변경을 처리하는 전통적인 방법은 조건문의 분기를 추가하거나 개별 분기 로직을 수정하는 것.
- 객체지향에서 변경을 다루는 전통적인 방법은 조건 로직을 객체 사이의 이동으로 바꾸는 것.
- 다형성은 이런 조건 로직을 객체 사이의 의동으로 바꾸기 위해 객체지향이 제공하는 설계 기법.
- 조건 로직을 객체 사이의 이동으로 대체하기 위해서는 커다란 클래스를 더 작은 클래스들로 분리해야 한다. 그러면 분리하기 위한 기준은? - 변경의 이유와 주기
- 클래스는 명확히 단 하나의 이유에 의해서만 변경돼야 하고 클래스 안의 모든 코드는 함께 변경돼야 한다.
- 따라서. 단일책임 원칙을 따르도록 클래스를 분리해야 한다는 것.
- 일관성 있는 협력을 위한 지침1 : 변하는 개념을 변하지 않는 개념으로부터 분리하ㅏ.
- 일관성 있는 협력을 위한 지침2 : 변하는 개념을 캡슐화하라. 핵심은 훌륭한 추상화를 찾아 추상화에 의존하도록 만드는 것.
'책책책 책을 읽읍시다‼ ver.개발 > [ 오브젝트: 코드로 이해하는 객체지향 설계 ]' 카테고리의 다른 글
[오브젝트] 40일차. 505-518pg | 개념적 무결성, 일관성 있는 협력, 디자인패턴 (0) | 2023.08.17 |
---|---|
[오브젝트] 39일차. 494-504pg | 캡슐화 (0) | 2023.08.16 |
[오브젝트] 37일차. 471-482pg | 실습위주 (0) | 2023.08.14 |
[오브젝트] 35일차. 447-459pg | 인터페이스 분리 원칙, 서브클래싱, 서브타이핑, 리스코프 치환 원칙 (0) | 2023.08.11 |
[오브젝트] 34일차. 436-446pg | 타입, 타입계층 (0) | 2023.08.10 |