열심히 끝까지
[10분 테코톡] 제리의 MVC 패턴 본문
제리의 MVC 패턴
https://www.youtube.com/watch?v=ogaXW6KPc8I
-MVC 패턴이 생겨난 이유?
> 과거를 생각해보자..
: 과거에 프로그래머들이 수많은 프로그램들을 만듦
: 프로그래머들이 코드가 많아지면 많아질수록 복잡
>> 코드 파악 어려움
>> 기능 수정 시 코드를 갈아 엎어야 하는 경우가 많음
>>유지보수에 어려움을 겪음
: 프로그래머들이 코드를 짜다보니
>> "~ 구성이 편하다"라는 패턴이 탄생
: 규칙성들이 조금씩 보이기 시작
>> 패턴을 하나의 공식으로 만듦
>> 논문으로 발표
+ 많은 프로그래머들 사이에서 MVC 패턴이 유명화
>> 결론
- 코드에 대한 유지보수를 어떻게 하면 편하게 할 수 있을까를
고민하다가 탄생하게 된 패턴 중 하나
- 유지보수가 편해지는 코드 구성 방식
- MVC패턴 전체구조 (웹에 비유하여 표현)
1. 사용자 -> controller
> 구글에 "코딩"이라고 검색
2. controller -> model
> "코딩"에 대한 검색 결과 데이터를 달라고 요청
model -> controller
> 검색 결과 데이터 전송
3. controller -> view
> model한테 받은 검색 결과 데이터를 view로 전달
4. view -> 사용자
> 사용자가 보는 UI(레이아웃)에 검색 결과 데이터를 넣어서
웹 페이지 보여주기
>> 기억해야 하는 것
- model, view, controller의 역할
- model
: 데이터와 관련된 일을 하는 곳
: 데이터와 관련된 부분
- view
: 사용자한테 보여지는 부분을 담당
- controller
: model과 view의 중개자 역할
: model과 view를 이어주는 부분
>> 내용을 들어서 알고 있지만 실전에서 적용을 못한다?
> 죽어있는 이론이라고 생각됨
>> 지금까지 설명한 내용만을 알고 있으면
MVC를 나도 모르게 어기면서 코딩을 하는 경우가 발생
> 미션을 하면서 MVC를 잘 못 구현해서 피드백을 받는 경우 다수 발생
>> 깊은 이론적 지식을 다루는 것 보다는
실전에서 보다 어떻게 하면 MVC를 잘 지키면서 코딩할 수 있는 지설명
>> MVC를 지키면서 코딩하는 방법 - 5가지 규칙
1. Model은 Controller와 View에 의존하지 않아야 함
: Model내부에 Controller와 View에 관련된 코드가 있으면 안 됨
: Model 클래스에서 컨트롤러와 뷰의 클래스를 import해서 사용하면 안 됨
>> Model은 데이터와 관련된 부분
-> 언제든 깔끔하고 정제된 데이터를 꺼내 쓸 수 있게
뷰나 컨트롤러에 코드를 섞어서 넣지 않고 데이터의 관련된 코드만
깔끔하게 모아두려는 것
2. View는 Model에만 의존해야 하고, Controller에는 의존하면 안 됨.
: View 내부에 Model의 코드만 있을 수 있고, Controller의 코드가 있으면 안 됨.
:
3. View가 Model로부터 데이터를 받을 때, 사용자마다 다르게 보여주어야 하는
데이터에 대해서만 받아야 함.
: 배달의 민족 어플에서 주문하기 어플(예시)
: 일관되게 똑같이 보여진 부분과 다르게 보여지는 부분이 다름
: 모든 사용자에게 똑같이 보여지는 부분(View가 자체적으로 가지고 있는 부분)과
사용자에게 따로 보여지는 부분(Model에게 받는 부분)으로 구성
4. Controller는 Model과 View에 의존해도 됨.
: Controller 내부에는 Model과 View의 코드가 있을 수 있음
: Controller는 모델과 뷰의 중개자 역할 + 전체 로직을 구성하기 때문
5. View가 Model로부터 데이터를 받을 때, Controller에서 받아야 함
>> 자동차 경주 게임
: 경주할 자동차 이름을 입력받음
: 시도를 할 때마다 각 자동차를 랜덤으로 이동
: 랜덤한 정도는 -로 표현
6 : 50 보면서 다시 보면서 익힐 것
>> 예시가 너무 적절
" - "가 각 사용자에게 다르게 보여주어야 함으로 model이 아닌 view에서 표현
'디바이스 융합 자바(Java)기반 풀스택 개발자 양성과정(과제)' 카테고리의 다른 글
[10분 테코톡] 라이언의 애자일 (0) | 2022.07.09 |
---|---|
[10분 테코톡] 해리&션의 MVC 패턴 (0) | 2022.07.08 |
[10분 테코톡] 루피의 우아한 테크코스 도서관리시스템 (0) | 2022.07.06 |
[코딩 과제] - 7/4 강사님 문제 (0) | 2022.07.04 |
[코딩 과제] - 6/29 MVC 자판기 프로그램 + 관리자 프로그램 (0) | 2022.06.29 |