01. 데이터 중심의 영화 예매 시스템
○ 데이터를 준비하자
○ 영화를 예매하자
02. 설계 트레이드오프
○ 캡슐화
· 객체를 사용하면 변경 가능성이 높은 부분은 내부에 숨기고(구현) 외부에는 상대적으로 안정적인 부분만 공개함으로써(인터페이스) 변경의 여파를 통제할 수 있다.
○ 응집도와 결합도
· 응집도: 모듈 내의 요소들이 하나의 목적을 위해 긴밀하게 협력한다면 높은 응집도
· 결합도: 어떤 모듈이 다른 모듈에 대해 꼭 필요한 지식만 알고 있다면 두 모듈은 낮은 결합도를 가진다.
클래스의 구현이 아닌 인터페이스에 의존하도록 코드를 작성해야 낮은 결합도를 얻을 수 있다.
03. 데이터 중심의 영화 예매 시스템의 문제점
○ 캡슐화 위반
○ 높은 결합도
○ 낮은 응집도
단일책임원칙(SRP: Single Responsibility Principle)
04. 자율적인 객체를 향해
○ 캡슐화를 지켜라
○ 스스로 자신의 데이터를 책임지는 객체
· 질문1: 어떤 데이터를 포함해야 하는가?
- 이 객체가 어떤 데이터를 포함해야 하는가?
- 이 객체가 데이터에 대해 수행해야 하는 오퍼레이션은 무엇인가?
· 질문2: 데이터를 처리하기 위해 어떤 오퍼레이션이 필요한가?
05. 하지만 여전히 부족하다.
○ 캡슐화 위반
캡슐화의 진정한 의미: 구현과 관련된 것이라면 변하는 어떤 것이든 감추는 것.
○ 높은 결합도
유연한 설계를 위해서는 캡슐화를 설계의 첫 번째 목표로 삼아야 한다.
○ 낮은 응집도
06. 데이터 중심 설계의 문제점
○ 데이터 중심 설계는 객체의 행동보다는 상태에 초점을 맞춘다
· 데이터 중심의 설계는 너무 이른 시기에 데이터에 대해 고민하기 때문에 캡슐화에 실패하게 된다. => 변경에 취약한 코드
○ 데이터 중심 설계는 객체를 고립시킨 채 오퍼레이션을 정의하도록 만든다
'독서 > Javascript' 카테고리의 다른 글
오브젝트 - 3. 역할, 책임, 협력 (0) | 2021.08.09 |
---|---|
오브젝트 - 2.객체지향 프로그래밍 (0) | 2021.08.08 |
오브젝트 - 1.객체, 설계 (0) | 2021.08.08 |