From 41eebd9410ec308ed2cb8e80e620db7157bbc6f7 Mon Sep 17 00:00:00 2001 From: LEESANGJO Date: Tue, 19 Nov 2024 22:08:29 +0900 Subject: [PATCH] =?UTF-8?q?Create=20=EC=9D=B4=EC=83=81=EC=A1=B0.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\354\235\264\354\203\201\354\241\260.md" | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 "\354\261\225\355\204\260_8/\354\235\264\354\203\201\354\241\260.md" diff --git "a/\354\261\225\355\204\260_8/\354\235\264\354\203\201\354\241\260.md" "b/\354\261\225\355\204\260_8/\354\235\264\354\203\201\354\241\260.md" new file mode 100644 index 0000000..f4a825a --- /dev/null +++ "b/\354\261\225\355\204\260_8/\354\235\264\354\203\201\354\241\260.md" @@ -0,0 +1,47 @@ +# mvc + +## 모델 +데이터와 비즈니스 로직 담당 +상품의 이름, 가격, 재고량 같은 데이터, 할인 가격을 계산하거나 재고를 관리하는 등 비즈니스 로직도 모델에 포함 +모델은 뷰나 컨트롤러를 모름. 데이터와 그 데이터를 다루는 규칙 +데이터가 변경되면 옵저버들에게 알려 뷰를 업데이트 + +## 뷰 +사용자에게 보여지는 인터페이스 +뷰는 수동성을 지님. 데이터를 직접 수정하거나 복잡한 로직 없고 컨트롤러로부터 받은 데이터를 정해진 방식대로 표시함 + +## 컨트롤러 +뷰와 모델의 중재자 + +View → Controller: 사용자 입력 전달 +Controller → Model: 데이터 업데이트 지시 +Model: 데이터 변경 및 Observer들에게 알림 +View: 알림을 받고 화면 자동 업데이트 + +# mvp + +mvc와 비슷한 것 같기도 한데, 모델과 뷰의 관계가 조금 다른 듯 +관찰자 패턴 대신 presenter가 뷰와 모델의 모든 통신을 중개하는 형태? + +리액트만 써서 전혀 감이 안옴;; + +# mvvm + +뷰와 뷰모델이 자동으로 동기화되는 것이 핵심(데이터 바인딩) +리액트도 비슷한 원리 + + +# 중간 계층의 역할 + +- Controller (MVC) + - 사용자 입력을 직접 받아 처리 + - Model의 변경을 View에 반영하는 역할 + - View와 Model 모두에 대해 알고 있음 +- Presenter (MVP) + - View는 Presenter를 통해서만 Model과 상호작용 + - View는 수동적이며 Presenter가 모든 UI 업데이트를 주도 + - 테스트 용이성이 높음 +- ViewModel (MVVM) + - 양방향 데이터 바인딩 지원 + - View의 상태를 직접 관리 + - 재사용성과 테스트 용이성이 높음