Skip to content

Latest commit

 

History

History
27 lines (21 loc) · 2.28 KB

File metadata and controls

27 lines (21 loc) · 2.28 KB

Presentation Layer (Feat. Controller)

0. Presentation Layer의 역할

1. API 호출 방식을 정의합니다.

2. 어떤 비즈니스 로직을 실행할 것인지 결정합니다.

3. API 호출 결과를 어떤 포맷으로 응답할지 정의합니다.

컨트롤러의 가장 큰 역할은 엔드포인트를 정의하고 API 사용자의 요청을 받아 그 결과를 응답 포맷에 맞춰 반환하는 것입니다. 따라서, Presentation Layer에는 비즈니스 로직, 데이터베이스 관련 로직이 있어도 안됩니다.

1. 의존성

이러한 Presentation의 특성에 맞춰 Presentation이 의존할 수 있는 Layer는 Service Layer, Core Layer, Util Layer로 국한하여 의존할 수 있도록 설정하였습니다.

API를 입력 받는 특성상 VO를 정의하고 DTO로의 변환 작업을 통해 DTO로 Service Layer로 전송할 수 있도록 합니다. 이렇게 함으로써 하위 모듈인 Service Layer에서 상위 모듈인 Presentation Layer의 VO 클래스에 의존하지 않고 비즈니스 로직을 작성할 수 있습니다.

2. VO 정의

소프트웨어 설계자 입장에서의 값 객체의 값은 불변성, 동등성, 자가 검증이라는 특성이 있습니다. 따라서 어떤 객체가 이 세 가지 특징을 만족할 때 VO라고 부릅니다.

값의 특징 설명 예시
불변성 값은 변하지 않습니다. 예를 들어, 숫자 1은 영원히 숫자 1입니다. final
동등성 값의 가치는 항상 같습니다. 예를 들어, 모든 숫자 1은 적혀 있는 위치나 시간과 관계없이 항상 같은 숫자 1입니다. @Override equals, hasCode
자가 검증 값은 그 자체로 올바릅니다. 예를 들어, 숫자 1은 그 자체로 올바른 숫자입니다. 이는 '1은 사실 1.01이지 않을까?와 같은 고민을 할 필요가 없다는 의미입니다.