우아한테크코스 6기 백엔드 프리코스 - 로또

계층화

현재 애플리케이션은 이렇게 생겼다. 모든 로직이 뒤엉켜 있다. 새로운 기능을 추가하기 힘들고 코드를 수정할 경우 어디까지 영향을 미칠지 알기 힘들다.

LottoMission-1 LottoMission-2

MVC 패턴

이전 미션에서도 미션의 코어 로직과 입출력 로직을 분리했지만 명시적으로 디렉토리를 나누지 않아서 코드를 보지 않는 한 어떤 클래스가 어떤 종류의 로직에 참여하는지 알기 힘들었다.
이번 주차부터는 핵심 로직과 UI를 분리하여 구현하라는 추가 요구사항이 있어서 디렉토리까지 나누고 그 과정을 기록하기로 했다.

added-request

MVC (모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다. MVC 소프트웨어 디자인 패턴의 세 가지 부분은 다음과 같이 설명할 수 있습니다.

  • 모델: 데이터와 비즈니스 로직을 관리합니다.
  • : 레이아웃과 화면을 처리합니다.
  • 컨트롤러: 모델과 뷰로 명령을 전달합니다.

MDN web docs: MVC

View

뷰는 앱의 데이터를 보여주는 방식을 정의합니다.

MDN web docs: MVC

이번 미션에서 뷰가 보여줘야 할 데이터는 아래와 같다.

view-example

이 데이터들은 모두 LotteryPortfolio 인스턴스에 저장되어 있다.

Controller

컨트롤러는 앱의 사용자로부터의 입력에 대한 응답으로 모델 및/또는 뷰를 업데이트하는 로직을 포함합니다.

MDN web docs: MVC

사용자에게 입력을 받아 모델(Lotto LotteryPortfolio 등)을 만든 뒤 적절한 뷰를 생성하고 출력한다.

controller-1

controller-2

개선할 점

하나의 컨트롤러 객체가 한 개 이상의 작업을 하고 있다. 입력에 대한 View를 생성하고 출력까지 하고 있다.

reference

Comments