개발을 하면서 MVC는 기본적으로 무조건 알아야 하는 내용이라고
설명하기엔 너무 당연한 내용이라 오히려 민망할 수준이다.
단순히 MVC가 무엇인지에 대해 대충 아는 정도의 수준에서 그치지 않고
실전에서 제대로 지키면서 적용시킬 수 있는 방법에 대해 공부해봤다.
해당 내용은 '[10분 테코톡] 🧀제리의 MVC 패턴' 영상을 정리한 내용 임을 밝힌다.
Model | 데이터와 관련된 부분 |
View | 사용자에게 보여지는 부분 |
Controller | Model과 View를 이어주는 부분 |
Model은 Controller와 View에 의존하지 않아야 한다.
Model 내부에 Controller와 View에 관련된 코드가 있으면 안된다.
MVC에서 '당당한 모델에겐 아무것도 필요하지 않다' 이렇게 연상하자!
Model 클래스에서 Cotroller와 View의 클래스를 import 해서 사용하면 안된다는 말이다.
public class Member {
private Long id;
private String name;
public Member(Long id, String name) {
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
}
위의 코드는 Controller나 View에 의존하고 있지 않다.
Model은 데이터와 관련된 부분이다 보니
언제든 깔끔하고 정제된 데이터를 꺼내 쓸 수 있도록
코드를 섞어서 쓰지 않고 데이터에 관련된 코드만 모아 놓으려고 했던 것이 아닐까?
View는 Model에만 의존해야 하고, Controller에는 의존하면 안 된다.
View 내부에 Model의 코드만 있을 수 있고
Controller의 코드가 있으면 안 된다.
사용자에게 일관적으로 보여져야 하는 화면이 있고
다르게 보여져야 하는 화면이 있을 것이다.
View가 자체적으로 가지고 있어야 하는 정보가 존재하고
사용자마다 다르게 보여야 하는 정보가 존재한다는 의미이다.
그렇기 때문에, View가 Model로부터 데이터를 받을 때는
사용자마다 다르게 보여주어야 하는 데이터에 대해서만 받아야 한다.
public class Controller {
public static void main(String[] args) {
Student student = new Student("병준", 20);
OutputView.printProfile(student);
}
}
Model인 Student 클래스로부터 학생의 데이터를 만들어서
View의 PrintProfile() 메서드한테 파라미터로 전달하는 것을 볼 수 있다.
View가 Model로부터 데이터를 받을 때 반드시 Controller에서 받아야 한다.
Controller는 Model과 View, 모두에게 의존해도 된다.
Controller 내부에는 Model과 View의 코드가 있을 수도 있다.
왜냐하면 Cotroller는 Model과 View의 중개자 역할을 하면서
전체 로직을 구성하기 때문이다.
참고 및 출처
'활동 > 호기심' 카테고리의 다른 글
[개발자 지식] JSON은 프로그래밍 언어와 프레임워크 등에 독립적이므로 서로 다른 시스템 간 데이터를 교환하기 좋다. (0) | 2024.05.25 |
---|---|
로그(log) 로깅(logging) 차이점도 모르겠는데.. 라이브러리까지 (0) | 2023.12.14 |
save() 메서드는 엔티티 상태를 데이터베이스에 반영 (1) | 2023.09.25 |
Spring Boot 게시글 업데이트 기능 구현 (Thymeleaf 활용 가이드) (0) | 2023.09.22 |
스프링 게시판 CRUD 만들기 (HTTP Method / GET방식과 POST방식) (0) | 2023.09.21 |