활동/호기심

우아한테크 MVC(Model, View, Controller) 패턴을 지키면서 코딩하는 꿀팁

ByeongJun 2023. 10. 10. 18:00
반응형

개발을 하면서 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의 중개자 역할을 하면서 

전체 로직을 구성하기 때문이다. 

 

 

 

 

 

참고 및 출처 

https://developer.mozilla.org/ko/docs/Glossary/MVC

https://www.youtube.com/watch?v=ogaXW6KPc8I 

반응형