Design Pattern

[Design Pattern] MVC패턴

JiWonSon 2023. 1. 9. 18:21

1. MVC패턴이란?

Model + View + Controller를 합친 용어이다.

 

  • Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
  • View : 사용자에서 보여지는 UI 부분
  • Controller : 사용자의 입력을 받고 처리하는 부분


2. MVC패턴의 흐름

  1. 클라이언트가 입력하여 요청 (ex. 저장버튼 클릭)

  2. 서버에 데이터를 요청, Controller에 요청한다.

  3. Controller에서 사용자에게 받은 데이터를 처리하기 위해 로직을 수행한다. Controller는 필요한 데이터들을 Model과 주고 받음

  4. Controller는 View에게 결과를 전달한다. 사용자에게 화면 결과를 보여줌

3. MVC패턴 코드

//Controller 모델을 통해 데이터를 받아 View로 보낸다
Class Users{
    function getProfile(id) {
       profile = this.UserModel.getProfile(id)
       renderView('user/profile', profile);
    }
}

//Model 데이터를 가져온다
Class UserModel{
    function getProfile(id){
       data = this.db.get('select * from users where id = id')
       return data;
    }
}

//View 받은 데이터를 사용자에게 보여준다.
<h1>{{profile.name}}</h1>
<ul>
   <li>Email: {{profile.email}}</li>
   <li>Phone: {{profile.Phone}}</li>
</ul>

 

4. MVC패턴의 장단점


장점

  • 단순하고 직관적

  • 기능 별로 코드를 분리하여 유연하고 확장하기 쉽다. 

단점

  • 위 패턴을 사용하기 위한 클래스, 기능들이 많이 필요하다. 복잡한 설계가 될 수 있음

  • Model과 View의 완벽한 분리가 어렵다. => Model과 View의 의존성이 높아 패턴이 모호해짐. 

  • 의존성이 높다면, 각각 독립적이지 않아 코드 하나를 수정하려면 여러 부분을 수정해야한다는 큰 단점이 있다.

 

 

++  Spring MVC 모델 흐름

 

'Design Pattern' 카테고리의 다른 글

[Design Pattern] 템플릿 메소드 패턴  (0) 2023.03.05
[Design Pttern] 데코레이터 패턴  (2) 2023.02.05
[Design Patter] 상태패턴  (0) 2023.01.07
[Design Pattern] 싱글톤 패턴  (0) 2022.12.17