chap06-객체와 자료구조
목차
1. 자료구조 vs 객체

○ 예시 - Shape

상황에 맞는 선택을 하면 된다
- 자료구조를 사용하는 절차적인 코드는 기본 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다.
- 절차적인 코드는 새로운 자료 구조를 추가하기 어렵다. 그러려면 모든 함수를 고쳐야 한다.
- 객체지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다.
- 객체지향 코드는 새로운 함수를 추가하기 어렵다. 그러려면 모든 클래스를 고쳐야 한다.
2. 디미터의 법칙

클래스 C의 메서드 f는 다음과 같은 객체의 메서드만 호출해야 한다
- 클래스 C
- 자신이 생성한 객체
- 자신의 인수로 넘어온 객체
- C 인스턴스 변수에 저장된 객체
디미터의 법칙에 어긋나는 상황
3. DTO
○ DTO(Data Transfer Object) = 자료구조
다른 계층 간 데이터를 교환할 때 사용
- 로직 없이 필드만 갖는다.
- 일반적으로 클래스명이 Dto(or DTO)로 끝난다.
- getter/setter를 갖기도 한다.
- Java Beans : 데이터 표현이 목적인 자바 객체
- 멤버 변수는 private 속성이다.
- getter와 setter를 가진다.
4. Active Record

○ Active Record = 자료구조
Database row를 객체에 맵핑하는 패턴
- 비즈니스 로직 메서드를 추가해 객체로 취급하는 건 바람직하지 않다.
- 비즈니스 로직을 담으면서 내부 자료를 숨기는 객체는 따로 생성한다.
- 하지만 객체가 많아지면 복잡하고, 가까운 곳에 관련 로직이 있는 것이 좋으므로 현업에서는 Entity에 간단한 메서드를 추가해 사용한다.
○ Active Record vs Data Mapper
Active Record

- 객체가 row를 담을 뿐 아니라 database에 대한 접근을 포함한다.
- Person의 속성을 담을 뿐 아니라, 생성 수정도 객체 안에서 수행할 수 있다.
- 사례 - Ruby on rails
Data Mapper

- row를 담는 객체와 database에 접근할 수 있는 객체가 분리되어 있다.
- Person은 값만 담고 있고, 생성, 수정 등 액션은 Person Mapper에서 담당한다.
- 사례 - Hibernate
'Study Cafe > Clean Code 스터디' 카테고리의 다른 글
| chap08-경계 (0) | 2023.03.28 |
|---|---|
| chap07-오류 처리 (0) | 2023.03.24 |
| chap05-형식 맞추기 (0) | 2023.03.22 |
| chap04-코드를 보조하는 주석 (0) | 2023.01.30 |
| ch03-함수 (1) | 2023.01.30 |
댓글
이 글 공유하기
다른 글
-
chap08-경계
chap08-경계
2023.03.28 -
chap07-오류 처리
chap07-오류 처리
2023.03.24 -
chap05-형식 맞추기
chap05-형식 맞추기
2023.03.22 -
chap04-코드를 보조하는 주석
chap04-코드를 보조하는 주석
2023.01.30