Spring 개발을 하다보면 MVC 패턴에 대해서 한 번은 반드시 들어봤을 거라고 생각한다. 개발을 하면서 어떻게 하면 코드를 깔끔하고 정리를 잘하면서 짤까 하는 고민이 생기는 것은 자연스러운 현상이다.
MVC 패턴은 이런 생각 끝에 오, 이렇게 하니까 유지보수성이 좋은 코드를 짤 수 있더라
라는 결론에 다다른 개념이라고 할 수 있다.
위 그림은 MVC 패턴을 구성하는 Model, View, Controller 의 관계에 대한 그림이다.
짧게 각각의 기능에 대해서 정리하자면,
Model
: 데이터와 관련된 부분
View
: 사용자에게 보여지는(화면) 부분
Controller
: Model과 View를 연결, 제어해주는 부분
이라고 할 수 있다. 이 정도의 개념은 MVC 패턴이 무엇인가 에 대해서 한 번이라도 공부해 본 사람은 쉽게 알 수 있는 내용이다.
그러나 실제로 MVC 패턴을 지키면서 코딩을 하는 것은 쉽지 않다. 나도 모르는 사이 패턴을 지키지 않으면서 코딩을 하고 있는 나 자신을 발견할 수 있다.
그러면, 어떻게 해야 실제로 MVC 패턴을 잘 지킨 코드를 짠다고 할 수 있을까?
Model
은 View와 Controller
에 의존해서는 안된다
.public class Student {
private String name;
private int age;
public Student(String name, int age){
this.name = name;
this.age = age;
}
}
View
는 Model에만 의존
해야 되고 Controller에는 의존해서는 안된다
.
즉, View 코드에서는 Model 객체를 불러와도 되지만 Controller를 참조하는 코드가 있으면 안된다.
View
가 Model로부터 데이터를 받아올 때는, 사용자마다 다르게 보여주어야 하는 데이터만
받아와야 한다.
즉, 사용자 모두에게 공통적으로 적용될 수 있는 리소스가 있고 사용자마다 다른 정보를 보여줘야 하는 리소스가 있을 것이다.
여기서 View는 사용자마다 다르게 보여줘야 할 데이터만을 받아야 한다.
Controller
는 View와 Model에 모두 의존
해도 된다.
즉, Controller는 둘을 연결시키고 제어하는 역할을 해야 하기 때문에 허용한다.
View
가 Model로부터 데이터를 받아올 떄, 값을 넘겨주는 역할은 Controller
여야 한다.
즉, Controller가 받아온 데이터를 View로 넘겨주는 역할을 침범해서는 안된다.
영상 출처:
[10분 테코톡] 🧀 제리의 MVC 패턴
https://www.youtube.com/watch?v=ogaXW6KPc8I