표준 “Model View Controller”패턴과 Microsoft의 Model / View / ViewModel 패턴간에 차이가 있습니까?
답변
MVC / MVVM은 하나 또는 선택 이 아닙니다 .
두 가지 패턴은 ASP.Net 및 Silverlight / WPF 개발에서 서로 다른 방식으로 잘립니다.
ASP.Net의 경우 MVVM은 뷰 내에서 데이터를 양방향 바인딩 하는 데 사용됩니다 . 일반적으로 클라이언트 측 구현입니다 (예 : Knockout.js 사용). 반면에 MVC 는 서버 측에서 우려 를 분리하는 방법입니다 .
Silverlight 및 WPF의 경우 MVVM 패턴은보다 포괄적이며 MVC (또는 소프트웨어를 구성하는 다른 패턴을 별도의 책임으로 대체)로 대체하는 것처럼 보일 수 있습니다 . 자주 패턴 나온 하나의 가정은, (가)이었다 ViewModel
단지에서 컨트롤러를 교체 MVC
(방금 대체 할 수있는 것처럼 VM
위한 C
약자의 모든 용서받을 것입니다) …
ViewModel이 별도의 컨트롤러에 대한 필요성을 반드시 대체 하지는 않습니다 .
문제는 : 독립적으로 테스트 할 수 있고 * 필요할 때 재사용 할 수 있다는 점에서 뷰 모델은 어떤 뷰가 뷰를 표시하는지 모르지만 더 중요한 것은 데이터가 어디에서 오는지 전혀 모른다는 것입니다 .
* 참고 : 실제로 컨트롤러는 ViewModel에서 단위 테스트가 필요한 대부분의 로직을 제거합니다. 그런 다음 VM은 테스트가 거의 필요없는 바보 같은 컨테이너가됩니다. VM은 디자이너와 코더 사이의 브리지 일 뿐이므로 간단합니다.
MVVM에서도 컨트롤러는 일반적으로 모든 처리 로직을 포함하고 어떤 뷰 모델을 사용하여 어떤 뷰에 어떤 데이터를 표시할지 결정합니다.
XAML 코드 숨김에서 코드를 제거 하여 XAML 편집을보다 독립적 인 작업으로 만드는 ViewModel 패턴의 주요 이점을 살펴 보았습니다 . 우리는 여전히 어플리케이션의 전체 로직을 제어하기 위해 컨트롤러를 생성합니다.
우리가 따르는 기본 MVCVM 지침은 다음과 같습니다.
- 뷰 는 특정 형태의 데이터를 표시합니다 . 그들은 데이터의 출처를 모릅니다.
- ViewModel 은 특정 형태의 데이터 및 명령을 보유하며 데이터 또는 코드의 출처 또는 표시 방법을 모릅니다.
- 모델 은 실제 데이터를 보유합니다 (다양한 컨텍스트, 저장 또는 기타 방법)
- 컨트롤러는 이벤트를 수신하고 게시합니다. 컨트롤러는 표시되는 데이터와 위치를 제어하는 논리를 제공합니다. 컨트롤러는 ViewModel에 실제로 재사용 할 수 있도록 명령 코드를 ViewModel에 제공합니다.
또한 Sculpture 코드 생성 프레임 워크 는 MVVM 및 Prism과 유사한 패턴을 구현하며 모든 사용 사례 로직을 분리하기 위해 컨트롤러를 광범위하게 사용합니다.
컨트롤러가 View 모델에 의해 폐기되었다고 가정하지 마십시오.
나는이 주제에 대해 블로그를 시작했다 . 대부분의 내비게이션 시스템은 뷰와 VM을 사용하기 때문에 MVCVM을 일반 내비게이션 시스템과 결합하는 데 문제가 있지만, 이후 기사에서 다루겠습니다.
MVCVM 모델을 사용 하면 응용 프로그램 수명 동안 메모리에 컨트롤러 개체 만 있으면되며 컨트롤러에는 주로 코드와 적은 상태 데이터 (예 : 작은 메모리 오버 헤드)가 포함됩니다. 따라서 뷰 모델을 유지해야하는 솔루션보다 메모리를 많이 사용하는 앱이 훨씬 줄어들며 특정 유형의 모바일 개발 (예 : Silverlight / Prism / MEF를 사용하는 Windows Mobile)에 이상적입니다. 응답 성을 위해 가끔 캐시 된 VM을 유지해야 할 수도 있으므로 이는 물론 애플리케이션 유형에 따라 다릅니다.
참고 :이 게시물은 여러 번 편집되었으며 좁은 질문을 구체적으로 대상으로하지 않았으므로 이제 첫 번째 부분도 업데이트했습니다. 아래 설명에서 대부분의 논의는 더 넓은 그림이 아니라 ASP.Net에만 관련됩니다. 이 게시물은 Silverlight, WPF 및 ASP.Net에서 MVVM의 광범위한 사용을 다루고 사람들이 컨트롤러를 ViewModels로 교체하지 못하도록하려고합니다.
답변
이 두문자어가 무엇을 의미하는지 이해하는 가장 쉬운 방법은 잠시 잊어 버리는 것입니다. 대신, 그들이 만든 소프트웨어, 각각에 대해 생각하십시오. 초기 웹과 데스크톱의 차이점으로 요약됩니다.
2000 년대 중반에 복잡성이 증가함에 따라 1970 년대에 처음 설명 된 MVC 소프트웨어 디자인 패턴이 웹 애플리케이션에 적용되기 시작했습니다. 데이터베이스, HTML 페이지 및 코드를 생각하십시오. MVC에 도달하기 위해이 부분을 약간 수정 해 보겠습니다.»database«의 경우 데이터베이스와 인터페이스 코드를 가정 해 봅시다. »HTML 페이지«의 경우 HTML 템플릿과 템플릿 처리 코드를 가정합니다. »code inbetween«의 경우, 사용자가 클릭을 행동으로 매핑하는 코드를 가정 해 데이터베이스에 영향을 미쳐 다른 뷰가 표시되게한다고 가정하겠습니다. 그것은 적어도이 비교의 목적을위한 것입니다.
이 웹 컨텐츠의 현재 기능을 그대로 유지하자. 그러나 10 년 전 자바 스크립트가 낮고 비열한 성가심이었던 실제 프로그래머는이를 피하기 위해 잘 해냈다. HTML 페이지는 본질적으로 멍청하고 수동적이다. . 브라우저는 씬 클라이언트이거나 그렇지 않은 경우 불량한 클라이언트입니다. 브라우저에 지능이 없습니다. 전체 페이지 다시로드 규칙 »view«는 매번 새로 생성됩니다.
이 웹 방식은 모든 분노에도 불구하고 데스크톱과 비교할 때 엄청나게 뒤떨어져 있음을 기억하십시오. 데스크톱 앱은 뚱뚱한 클라이언트 또는 리치 클라이언트입니다. (Microsoft Word와 같은 프로그램도 일종의 클라이언트, 문서 용 클라이언트로 생각할 수 있습니다.) 그들은 지능이 풍부하고 데이터에 대한 지식이 풍부한 클라이언트입니다. 상태가 양호합니다. 처리중인 데이터를 메모리에 캐시합니다. 전체 페이지를 새로 고침하는 것과 같은 쓰레기는 없습니다.
이 풍부한 데스크탑 방식은 아마도 두 번째 약어 인 MVVM이 시작된 곳일 것입니다. C의 생략으로 인해 문자에 속지 마십시오. 컨트롤러는 여전히 있습니다. 그들은해야합니다. 아무것도 제거되지 않습니다. 상태 저장 (statefulness), 클라이언트에 캐시 된 데이터 (및 해당 데이터를 처리하는 인텔리전스와 함께) 한 가지만 추가하면됩니다. 이 데이터, 본질적으로 클라이언트의 캐시는 이제»ViewModel«이라고합니다. 풍부한 상호 작용이 가능합니다. 그리고 그게 다야.
- MVC = 모델, 컨트롤러,보기 = 기본적으로 단방향 통신 = 불량한 대화 형 작업
- MVVM = 모델, 컨트롤러, 캐시,보기 = 양방향 통신 = 풍부한 상호 작용
Flash, Silverlight 및 가장 중요한 JavaScript를 통해 웹에 MVVM이 포함되어 있음을 알 수 있습니다. 브라우저는 더 이상 합법적으로 씬 클라이언트라고 할 수 없습니다. 그들의 프로그래밍 가능성을보십시오. 메모리 소비량을보십시오. 최신 웹 페이지에서 모든 Javascript 상호 작용을 살펴보십시오.
개인적으로 저는이 이론과 약어 비즈니스가 구체적인 현실에서 무엇을 의미하는지 이해함으로써 이해하기 쉽다는 것을 알게되었습니다. 추상적 인 개념은 특히 구체적인 문제에 대해 설명 할 때 유용하므로 이해는 완전한 원이 될 수 있습니다.
답변
MVVM Model-View ViewModel 은 MVC, Model-View Controller 와 유사합니다.
컨트롤러 가 ViewModel 로 교체되었습니다 . ViewModel은 UI 레이어 아래에 있습니다. ViewModel은 뷰에 필요한 데이터 및 명령 객체를 노출합니다. 이것을 데이터와 액션을 얻는 컨테이너 객체로 생각할 수 있습니다. ViewModel은 모델에서 데이터를 가져옵니다.
Russel East 는 블로그에서 MVVM이 MVC와 다른 이유 에 대해 자세히 설명합니다.
답변
우선 MVVM은 XAML을 사용하여 디스플레이를 처리하는 MVC 패턴의 진행입니다. 이 기사 에서는 두 가지 측면 중 일부를 간략하게 설명합니다.
Model / View / ViewModel 아키텍처의 주요 추력은 데이터 ( “모델”) 위에 데이터 개념을보다 밀접하게 매핑하는 비 시각적 구성 요소 ( “ViewModel”)의 또 다른 계층이있는 것 같습니다. 데이터보기의 개념 ( “보기”). 모델이 아닌 뷰가 바인딩되는 ViewModel입니다.
답변
Microsoft는 여기 Windows 환경에서 MVVM 패턴에 대한 설명을 제공 했습니다 .
중요한 섹션은 다음과 같습니다.
Model-View-ViewModel 디자인 패턴에서 앱은 세 가지 일반 구성 요소로 구성됩니다.
모델 : 앱이 사용하는 데이터 모델을 나타냅니다. 예를 들어 사진 공유 앱에서이 계층은 장치에서 사용 가능한 사진 세트와 사진 라이브러리를 읽고 쓰는 데 사용되는 API를 나타낼 수 있습니다.
보기 : 일반적으로 앱은 여러 페이지의 UI로 구성됩니다. 사용자에게 표시되는 각 페이지는 MVVM 용어로보기입니다. 뷰는 사용자가 보는 것을 정의하고 스타일을 지정하는 데 사용되는 XAML 코드입니다. 모델의 데이터는 사용자에게 표시되며 앱의 현재 상태를 기반으로 UI에이 데이터를 제공하는 것이 ViewModel의 작업입니다. 예를 들어 사진 공유 앱에서보기는 사용자에게 장치의 앨범 목록을 보여주는 UI, 앨범의 사진 및 사용자에게 특정 사진을 보여주는 다른 UI가됩니다.
ViewModel : ViewModel은 데이터 모델 또는 단순히 모델을 앱의 UI 또는 뷰에 연결합니다. 여기에는 모델의 데이터를 관리하는 논리가 포함되어 있으며 XAML UI 또는 뷰가 바인딩 할 수있는 속성 집합으로 데이터를 노출합니다. 예를 들어 사진 공유 앱에서 ViewModel은 앨범 목록을 표시하고 각 앨범마다 사진 목록을 표시합니다. UI는 사진의 출처와 검색 방법에 관계없이 사용할 수 있습니다. ViewModel에 의해 노출 된 일련의 그림을 알고 사용자에게 보여줍니다.
답변
주된 차이점 중 하나는 MVC에서 V가 M을 직접 읽고 C를 통해 데이터를 조작하는 반면 MVVM에서는 VM이 M 프록시 역할을하며 사용 가능한 기능을 제공한다는 점입니다. V.
내가 쓰레기로 가득 차 있지 않다면, 아무도 하이브리드를 만들지 않은 것에 놀랐습니다. 여기서 VM은 단지 M 프록시이며 C는 모든 기능을 제공합니다.
답변
MVC는 통제 된 환경이고 MVVM은 반응적인 환경입니다.
통제 된 환경에서는 코드가 적고 일반적인 논리 소스가 있어야합니다. 항상 컨트롤러 내에 있어야합니다. 하나; 웹 세계에서 MVC는 뷰 생성 로직과 뷰 동적 로직으로 쉽게 구분됩니다. 생성은 서버에서 이루어지고 동적 수명은 클라이언트에서 이루어집니다. AngularJS와 결합 된 ASP.NET MVC의 경우이 점을 많이 볼 수 있지만 서버는 모델을 작성하고 모델에 전달하여 클라이언트로 보냅니다. 그러면 클라이언트는 View와 상호 작용하며이 경우 AngularJS는 로컬 컨트롤러로 들어갑니다. 제출 된 모델 또는 새 모델은 서버 컨트롤러로 다시 전달되어 처리됩니다. (사이클이 계속되고 소켓이나 AJAX 등으로 작업 할 때이 처리에 대한 다른 많은 번역이 있지만 모든 아키텍처에서 동일합니다.)
MVVM은 일반적으로 일부 이벤트를 기반으로 활성화되는 코드 (예 : 트리거)를 작성하는 사후 환경입니다. MVVM이 번성하는 XAML에서는 내장 된 데이터 바인딩 프레임 워크를 사용하여이 작업을 쉽게 수행 할 수 있지만 BUT은 프로그래밍 언어가있는 모든 뷰에서 모든 시스템에서 작동합니다. MS 특정이 아닙니다. ViewModel (일반적으로 속성 변경 이벤트)이 실행되고 View는 생성 한 트리거에 따라 반응합니다. 이것은 기술적으로 얻을 수 있지만 결론은 View가 Stateless이며 논리가 없다는 것입니다. 단순히 값을 기준으로 상태를 변경합니다. 또한 ViewModel은 로직이 거의없는 상태 비 저장이며 모델은 상태 만 유지해야하므로 기본적으로 로직이 0 인 상태입니다. 나는 이것을 응용 프로그램 상태 (모델), 상태 번역기 (ViewModel), 그리고 시각적 상태 / 상호 작용 (보기)으로 설명합니다.
MVC 데스크톱 또는 클라이언트 측 응용 프로그램에는 모델이 있어야하며 컨트롤러에서 모델을 사용해야합니다. 모델을 기반으로 컨트롤러가보기를 수정합니다. 보기는 일반적으로 인터페이스가있는 컨트롤러에 연결되므로 컨트롤러가 다양한보기로 작업 할 수 있습니다. ASP.NET에서 MVC의 로직은 컨트롤러가 모델을 관리하고 모델을 선택된 뷰로 전달함에 따라 서버에서 약간 뒤로 향합니다. 그런 다음 View는 모델을 기반으로하는 데이터로 채워지며 자체 로직 (일반적으로 AngularJS와 같은 다른 MVC 세트)을 갖습니다. 사람들은 이것을 논쟁하고 응용 프로그램 MVC와 혼동하여 프로젝트 유지 관리가 결국 재앙이 될 시점에서 두 가지를 모두 시도합니다. MVC를 사용할 때는 항상 논리와 제어를 한 위치에 두십시오. 컨트롤러 또는 모델 데이터를 수용하기 위해 View의 코드 뒤에 (또는 웹을 위해 JS를 통한 View에서) View 로직을 작성하지 마십시오. 컨트롤러가보기를 변경하도록합니다. View에 있어야하는 유일한 논리는 사용중인 인터페이스를 통해 작성하고 실행하는 데 필요한 모든 것입니다. 이에 대한 예는 사용자 이름과 비밀번호를 제출하는 것입니다. 데스크톱 또는 웹 페이지 (클라이언트의) 여부에 상관없이 Controller는 View가 제출 조치를 실행할 때마다 제출 프로세스를 처리해야합니다. 올바르게 수행하면 항상 MVC 웹 또는 로컬 앱을 쉽게 찾을 수 있습니다. 데스크톱 또는 웹 페이지 (클라이언트의) 여부에 상관없이 Controller는 View가 제출 조치를 실행할 때마다 제출 프로세스를 처리해야합니다. 올바르게 수행하면 항상 MVC 웹 또는 로컬 앱을 쉽게 찾을 수 있습니다. 데스크톱 또는 웹 페이지 (클라이언트의) 여부에 상관없이 Controller는 View가 제출 조치를 실행할 때마다 제출 프로세스를 처리해야합니다. 올바르게 수행하면 항상 MVC 웹 또는 로컬 앱을 쉽게 찾을 수 있습니다.
MVVM은 완전히 반응하므로 개인적으로 가장 좋아합니다. 모델이 상태를 변경하면 ViewModel이 해당 상태를 수신하고 변환합니다. 그런 다음 View는 상태 변경을 위해 ViewModel을 수신하고 ViewModel의 변환에 따라 업데이트됩니다. 어떤 사람들은 그것을 순수한 MVVM이라고 부르지 만 실제로는 하나 뿐이며 어떻게 주장하는지 상관하지 않으며 항상 View에 논리가없는 순수한 MVVM입니다.
다음은 약간의 예입니다. 버튼을 누를 때 메뉴 슬라이드가 표시되도록하겠습니다. MVC에서는 인터페이스에 MenuPressed 액션이 있습니다. 컨트롤러는 메뉴 버튼을 클릭 한 후 SlideMenuIn과 같은 다른 인터페이스 방법에 따라 메뉴에서 슬라이드를 보도록 지시합니다. 어떤 이유로 왕복 여행? 컨트롤러가 당신이 할 수 없거나 다른 것을하고 싶을 경우를 대비하십시오. 컨트롤러는 별도의 지시가없는 한 뷰가없는 상태에서 뷰를 담당해야합니다. 하나; MVVM에서 애니메이션의 슬라이드 메뉴는 내장되어 있고 일반적이어야하며, 슬라이드 인하라는 메시지 대신 어떤 값을 기준으로합니다. 따라서 ViewModel을 수신하고 ViewModel에 IsMenuActive = true (또는 그에 대한) 애니메이션이 표시됩니다. 지금, 그것으로 나는 또 다른 요점을 정말로 명확하게하고 싶다고 말하면서주의를 기울여야한다. IsMenuActive는 아마도 BAD MVVM 또는 ViewModel 디자인 일 것입니다. ViewModel을 설계 할 때 View에 기능이 전혀 없다고 가정하고 변환 된 모델 상태 만 전달하면 안됩니다. 그렇게하면 메뉴를 제거하기 위해보기를 변경하고 데이터 / 옵션을 다른 방법으로 표시하기로하면 ViewModel은 신경 쓰지 않습니다. 메뉴를 어떻게 관리하겠습니까? 데이터가 의미가있을 때 그렇게됩니다. 따라서이를 수행하는 한 가지 방법은 메뉴에 옵션 목록 (아마도 내부 ViewModel 배열)을 제공하는 것입니다. 해당 목록에 데이터가있는 경우 메뉴는 트리거를 통해 열리는 것을 알고 그렇지 않은 경우 트리거를 통해 숨기는 것을 알고 있습니다. 메뉴에 대한 데이터가 있거나 ViewModel에 없습니다. ViewModel에서 해당 데이터를 표시 / 숨기기로 결정하지 마십시오. 단순히 모델의 상태를 번역하십시오. 이러한 방식으로 View는 완전히 반응적이고 일반적이며 다양한 상황에서 사용할 수 있습니다.
각각의 아키텍처에 대해 조금이라도 익숙하지 않고 인터넷에서 많은 BAD 정보를 찾을 때 매우 혼란 스러울 수 있다는 것을 배우면이 모든 것이 아마도 의미가 없습니다.
그러니 .. 이걸 얻기 위해 명심해야 할 것들. 애플리케이션 설계 방법과 STICK TO IT를 먼저 결정하십시오.
훌륭한 MVC를 수행하는 경우 Controller가 관리 가능하고 View를 완전히 제어 할 수 있는지 확인하십시오. 큰보기가있는 경우 다른 컨트롤러가있는보기에 컨트롤을 추가하는 것이 좋습니다. 다만 해당 컨트롤러를 다른 컨트롤러에 캐스케이드 연결하지 마십시오. 유지하기가 매우 실망합니다. 별도의 구성 요소로 작동하는 방식으로 잠시 시간을내어 물건을 개별적으로 설계하십시오. 그리고 항상 컨트롤러가 모델에 스토리지를 커밋하거나 유지하도록 지시하십시오. MVC에 대한 이상적인 종속성 설정은 View ← Controller → Model 또는 ASP.NET을 사용하는 것입니다 (시작하지 마십시오) Model ← View ↔ Controller → Model (여기서 Model은 컨트롤러마다 다르거 나 완전히 다른 모델 일 수 있습니다)…이 시점에서 View의 Controller에 대해 알아야 할 유일한 점은 주로 엔드 포인트 참조가 모델을 다시 전달할 위치를 아는 것입니다.
당신이 MVVM을한다면, 나는 당신의 친절한 영혼을 축복하지만, 그것을 올바르게하기 위해 시간이 걸립니다! 인터페이스를 사용하지 마십시오. View가 값을 기반으로 표시되는 방식을 결정하도록합니다. Mock 데이터가있는 View로 재생하십시오. 당시에 원하지 않더라도 메뉴를 보여주는보기가 표시되면 (예 : GOOD). 당신은보기가 정상적으로 작동하고 값을 기준으로 반응하고 있습니다. ViewModel이 특정 변환 상태에 있거나이 상태를 비우도록 ViewModel에 명령 할 때 발생하지 않도록 트리거에 몇 가지 요구 사항을 추가하십시오. ViewModel에서 View가 볼지 여부를 결정하는 것처럼 내부 논리로 이것을 제거하지 마십시오. ViewModel에 메뉴가 있거나 없다고 가정 할 수는 없습니다. 그리고 마지막으로, 모델을 사용하면 상점 상태를 변경하고 가능하게 할 수 있습니다. 여기에서 유효성 검사와 모든 작업이 수행됩니다. 예를 들어, 모델이 상태를 수정할 수없는 경우 단순히 더럽거나 무언가로 플래그가 지정됩니다. ViewModel이 이것을 인식하면 더러워진 것을 번역하고 View는 이것을 인식하고 다른 트리거를 통해 정보를 보여줍니다. View의 모든 데이터는 ViewModel에 바인딩 될 수 있으므로 모든 것이 동적 일 수 있으며 ViewModel은 View가 바인딩에 어떻게 반응하는지 전혀 모릅니다. 사실 Model은 ViewModel에 대해 전혀 모릅니다. 의존성을 설정할 때 그렇게 가리켜 야합니다. t 상태를 수정하면 단순히 더럽거나 무언가로 표시됩니다. ViewModel이 이것을 인식하면 더러워진 것을 번역하고 View는 이것을 인식하고 다른 트리거를 통해 정보를 보여줍니다. View의 모든 데이터는 ViewModel에 바인딩 될 수 있으므로 모든 것이 동적 일 수 있으며 ViewModel은 View가 바인딩에 어떻게 반응하는지 전혀 모릅니다. 사실 Model은 ViewModel에 대해 전혀 모릅니다. 의존성을 설정할 때 그렇게 가리켜 야합니다. t 상태를 수정하면 단순히 더럽거나 무언가로 표시됩니다. ViewModel이 이것을 인식하면 더러워진 것을 번역하고 View는 이것을 인식하고 다른 트리거를 통해 정보를 보여줍니다. View의 모든 데이터는 ViewModel에 바인딩 될 수 있으므로 모든 것이 동적 일 수 있으며 ViewModel은 View가 바인딩에 어떻게 반응하는지 전혀 모릅니다. 사실 Model은 ViewModel에 대해 전혀 모릅니다. 의존성을 설정할 때 그렇게 가리켜 야합니다. View의 모든 데이터는 ViewModel에 바인딩 될 수 있으므로 모든 것이 동적 일 수 있으며 ViewModel은 View가 바인딩에 어떻게 반응하는지 전혀 모릅니다. 사실 Model은 ViewModel에 대해 전혀 모릅니다. 의존성을 설정할 때 그렇게 가리켜 야합니다. View의 모든 데이터는 ViewModel에 바인딩 될 수 있으므로 모든 것이 동적 일 수 있으며 ViewModel은 View가 바인딩에 어떻게 반응하는지 전혀 모릅니다. 사실 Model은 ViewModel에 대해 전혀 모릅니다. 의존성을 설정할 때 그렇게 가리켜 야합니다.View → ViewModel → Model (여기서 참고 사항 … 이것은 아마도 논쟁의 여지가 있지만 아마도 신경 쓰지 않습니다 … MODEL을 변경할 수없는 경우가 아니라면 VIEW에 모델을 전달하지 마십시오. 적절한 ViewModel. View에는 모델 기간이 표시되지 않아야합니다. 쥐가 당신이 본 데모 나 수행 방식을 깨뜨 렸습니다.
마지막 팁은 다음과 같습니다. 잘 디자인되었지만 매우 간단한 MVC 응용 프로그램을 살펴보고 MVVM 응용 프로그램에 대해서도 동일하게 수행하십시오. 하나는 유연성이 0으로 제한되어 있고, 다른 하나는 제어가없고 무제한의 유연성이 있습니다.
제어 된 환경은 일련의 컨트롤러 또는 (단일 소스)에서 전체 애플리케이션을 관리하는 데 유용하지만, 반응성 환경은 나머지 애플리케이션이 무엇을하는지 전혀 몰라도 별도의 리포지토리로 나눌 수 있습니다. 마이크로 관리 대 무료 관리.
내가 당신을 충분히 혼동하지 않았다면 저에게 연락을 시도하십시오 … 나는 그림과 예를 가지고 이것을 자세히 자세히 설명하지 않습니다.
하루가 끝나면 우리는 모든 프로그래머이며 코딩 할 때 그 무정부 상태가 우리 안에 살고 있습니다. 그래서 규칙이 깨지고 이론이 바뀌고이 모든 것이 호그 워시로 끝날 것입니다. 프로젝트와 대규모 팀에서 실제로 디자인 패턴에 동의하고이를 시행하는 데 도움이됩니다. 언젠가는 처음에 취해진 작은 추가 단계가 나중에 도약과 저축의 경계가 될 것입니다.