개발세발

MVC패턴 본문

코딩공부/참고자료

MVC패턴

뉼👩🏻‍💻 2022. 11. 25. 20:04
728x90
반응형
SMALL

 

MVC라는 개념을 알긴안다. 하지만 누가 물어본다면 설명해 줄 수 있을까? 라는 질문을 스스로에게 해본다면 '못한다'라는 대답을 할 것이다. 

 

앞으로도 계속 만나게 될 것 이고, 제대로 정리해서 남겨놓고 싶었기에 여러 자료를 참고해가며 정리했다. 

 

 

*디자인 패턴

 : SW 개발 방법을 공식화 한 것 

 

[역사]

1. 모델 1

: JSP + JavaBean(Service) 

** JSP : view, JavaBean : Model 

- 구조가 단순하다는 장점이 있지만,

출력과 로직 코드가 섞여 JSP코드가 복잡해진다는 단점이 있다. 또한 프런트와 백엔드가 혼재되어 분업이 용이하지 않으며 유지보수가 어렵다 

 

2. 모델2 

: JavaBean(Service) + JSP + 서블릿(controller) 

- 뷰와 로직의 분리로 모델1에 비해 덜 복잡하고 분업이 용이하며 유지보수가 쉽다 

하지만 모델1에 비해 습득이 어렵고 작업량이 많다. 

 

mvc 는 왜 생겨났을까 

과거의 코드는 유지보수가 불편했기에 이를 해소하기 위해 만들어진 하나의 패턴이 MVC패턴이다. 

결과적으로 유지보수를 효율적으로 하기 위해 만들어진 패턴이다 

- 구성요소들의 재사용성 향상 / 확장성 증가 / 중복 코딩 제거 / 각 요소들에 집중 / 각 컴포넌트의 코드 결합도를 낮추기 위해  

 

 

- 현재 가장 친숙하게 알고 있는 것은 Cocoa MVC(Apple MVC)

: IOS설계를 위해 apple이 만든 모델과 뷰가 분리된 패턴

- 개인용 컴퓨터에서 작동하는 애플리케이션의 개발을 목적으로 만들어진 패턴 

➡️ WWW(World Wide WEB) 애플리케이션을 사용하기 위한 용도로도 폭넓게 사용

 

 

[MVC 흐름]

1. 클라이언트는 필요한 기능을 컨트롤러에 요청

2. 컨트롤러는 알맞은 모델에게 비즈니스 로직 수행을 맡김

3. 컨트롤러가 사용자에게 보여줄 알맞은 뷰 선택

4. 뷰는 사용자에게 결과 화면을 출력하여 보여줌. 이때 사용자에게 보여줄 데이터는 컨트롤러를 통해서 전달받음 

 

 

 

Model 모델

: 데이터와 관련된 일을 함 

- 데이터와 행동을 갖는 객체

- 비즈니스 로직 수행 

 : 상태 변화 처리, 상태 정보 반환 

 

 

View 뷰

: 사용자에게 보여지는 부분 

- 데이터의 시각화

- 모델이 처리한 데이터를 받아서 사용

- 데이터나 로직이 들어가 있으면 안됨!

 

Controller 컨트롤러 

: model과 view의 중개자 

- 사용자의 요청을 해석하여 처리하고 결과를 반환

- 모델과 뷰를 느슨하게 연결

- 데이터의 흐름을 제어 

 

 

 

MVC를 지키면서 코딩하는 방법

1. Model은 Controller와 view에 의존하지 않아야 한다 

- Model 내부에 Controller와 View에 관련된 코드가 있으면 안된다

 

2. View는 Model에만 의존해야 하고, Controller에는 의존하면 안된다 

- view 내부에 Model코드만 있을 수 있고, Controller의 코드가 있으면 안된다

 

3. View가 Model로부터 데이터를 받을 때는, 사용자마다 다르게 보여주어야 하는 데이터에 대해서만 받아야 한다. 

view는 사용자한테 보이는 UI와 모델로부터 받은 데이터가 합쳐져 만들어진 화면이다. 

따라서 사용자에 따라 달라질 수 있는 모델에서 받은 데이터가 보여지는 곳을 제외한 영역은 view자체에 원래 있어야 한다 

= 사용자마 다르게 보여지는 데이터만 model을 통해서 받아야 한다 

 

4. Controller는 Model과 View에 의존해도 된다

(controller내부에는 model과 view의 코드가 있을 수 있다)

 

5.View가 Model로부터 데이터를 받을 때, 반드시 Controller에서 받아야 한다

 

 

 

Service 

: 비즈니스 로직(Business Logic)을 수행하는 메서드를 가지고 있는 객체 

- 비즈니스 메서드를 별도의 Service 객체에서 구현하도록 하고 컨트롤러는 Service 객체를 사용하도록 한다 

 

Routing (라우팅)

: 어떤 주소에서 어떠한 데이터를 보여줄 것인지 

 

 

 

출처 

MVC 웹 프레임워크가 뭔가요?

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

[10분 테코톡] 🧀 제리의 MVC 패턴

https://www.youtube.com/watch?v=ogaXW6KPc8I&t=9s 

[10분 테코톡] 🐝범블비의 MVC Pattern

https://www.youtube.com/watch?v=es1ckjHOzTI&t=10s

[10분 테코톡] 👩🏻‍💻👨🏻‍💻해리&션의 MVC 패턴

https://www.youtube.com/watch?v=uoVNJkyXX0I&t=585s

728x90
반응형

'코딩공부 > 참고자료' 카테고리의 다른 글

prettier과 ESLint  (0) 2022.12.20
package.json 과 package-lock.json  (1) 2022.12.20
기본 리눅스 명령어 정리  (0) 2022.11.25
데이터 포맷  (0) 2022.10.05
Visual sutido code 시작하기  (1) 2022.10.01