Search

컨트롤러의 부담 덜기

서비스 레이어 추가

지난 미션과 마찬가지로, 이번에도 MVC 패턴에 Layered Architecture을 적용했기에 컨트롤러의 역할 부담을 덜기 위해 서비스 레이어를 추가했다. 이번 리팩토링에서도 컨트롤러에는 비즈니스 로직을 모두 제외하고 입출력과 중개만 담당하도록 초점을 맞추었다.
class EventPlanner { /** * 이벤트 처리 및 계산된 결과 출력 * @returns {Promise<void>} - 처리 결과를 출력하는 Promise */ async manageEvent() { const eventProcessor = await this.#initEventProcessor(); // 사용자 input 받고 준비 if (eventProcessor) { // EventPlanner가 직접 계산하지 않고 // 계산 (비즈니스 로직)은 service layer의 EventProcessor에 위임 // 그 결과 값만 사용 const eventProcessingResult = eventProcessor.process(); // 계산된 결과 출력 this.#printResult(eventProcessingResult); } } // ... 생략 }
JavaScript
복사
위와 같이 컨트롤러 역할인 EventPlanner 클래스 상단에 manageEvent 함수를 두어 사용자 입력을 받으면, 컨트롤러가 직접 계산하지 않고 서비스 레이어인 EventProcessor에 위임하도록 했다. 서비스 레이어가 연산을 완료하면, 컨트롤러는 그 값만 사용해 출력하면 된다.
위와 같이 컨트롤러 상단에 역할을 정의하니 가독성도 좋아지고, 컨트롤러의 부담도 덜을 수 있었다.