
뷰와 도메인(비즈니스 로직)의 분리



애플리케이션의 정보(데이터)
데이터를 받으면 화면에 표시해주는 역할
모델과 뷰를 잇는 다리 역할, 데이터와 비즈니스 로직 사이 상호동작을 관리
= 모델 내부에 Controller,View 관련된 코드가 있으면 안된다.
= 뷰 내부에 모델코드만 있고, 컨트롤러 코드는 없어야 함.
즉, 뷰는 사용자로부터 공통으로 보여줘야 하는 부분(뷰가 자체적으로 가지고 있어할 정보들) + 개별화된 부분
class Car{
\# static string ONE_STEP ="-";
public Result move(){
...
OutputView.printResult(ONE_STEP);
return result;
}
}
ONE_STEP은 자동차가 전진정보를 표시할 마크 정보를 담는다.
ex) car: ------
이는 모든 자동차 공통에 해당하므로 View 로 전달할 필요가 없다. 뷰가 자체적으로 정보를 가지고 있으면 된다.
Controller 내부에는 Model과 View에 관련한 코드가 있어도 된다.
View 내부에서 Model 을 불러와서 보여주는 것이 아니라,
다음과 같이 컨트롤러 내부에서 모델 데이터를 불러와서 outputView 에 전달한다.
View 는 데이터를 받아서 보여주는 역할만 수행할 수 있도록 한다.
async handleBuyLottos() {
const money = await InputView.readMoney();
this.#customer = new Customer(money);
this.#customer.buyLottos();
OutputView.printLottos(this.#customer.getLottos());
}
Q. 모델의 데이터를 보기 좋은 형태로 가공하는 것(ex. 소숫점 이하 둘째자리)은 누구의 역할인가?
A. View 의 역할이라고 생각한다.
Q. 데이터에 대한 유효성 검증은 어디에서 진행하나?