전통문화대전망 - 전통 미덕 - MVC 패턴에 대해 어떻게 이해하고 있나요?
MVC 패턴에 대해 어떻게 이해하고 있나요?
MVC 패턴에 대해 어떻게 이해하고 있나요? , MVC 패턴에 대한 이해를 설명해주세요.
모델은 애플리케이션의 핵심을 나타냅니다(예: 데이터베이스 레코드 목록).
보기에는 데이터(데이터베이스 레코드)가 표시됩니다.
컨트롤러는 입력(데이터베이스 레코드 쓰기)을 처리합니다.
간단한 이해와 개인적인 느낌을 이야기해보자:
케이크, 밀크티, 캔디 등 모델 엔터티 클래스
매장 전면 등 인터페이스 제어 보기
컨트롤러 사용자 인터페이스 클래스, 사용자는 먼저 판매원과 같은 항목에 액세스합니다.
위 세 가지를 조합하면 판매원이 식품점을 운영하는 장면을 구성했다는 의미입니다. ... 그리고 당신 웹페이지를 방문하는 고객은 마치 사탕을 사는 것과 같습니다
또한 이 모델은 일종의 구분일 뿐이며, 특히 엔터티 유형이 많고 비즈니스 로직이 복잡한 경우 매체에 권장됩니다. 및 대규모 프로젝트
오래된 개발 방법은 명확하지 않지만 소규모 프로젝트는 MVC보다 편리합니다.
MVC 및 Struts 패턴에 대한 이해에 대해 이야기하겠습니다
MVC 방식은 스몰토크에서 주로 사용되며 사용자 인터페이스를 생성하는데 사용됩니다. MVC에 포함된 디자인 패턴은 "패턴"의 의미를 이해하는 데 도움이 될 수 있습니다.
MVC에는 세 가지 유형의 객체가 포함되어 있습니다. Model은 애플리케이션 객체이고, View는 화면 표현이며, Controller는 사용자 입력에 대한 처리(반응) 방법을 정의합니다. MVC 방식을 적용하기 전에는 일반적으로 이 세 가지 객체의 기능을 함께 결합하고 MVC를 사용하여 분리하여 디자인에 유연성과 재사용성을 제공했습니다.
MVC는 뷰와 모델 사이에 구독/알림 프로토콜을 설정하여 뷰와 모델 개체를 분리합니다. View 객체는 해당 표현이 모델 객체의 상태를 반영하는지 확인해야 합니다. 모델 객체는 이 작업에 대한 응답으로 뷰 객체에 업데이트된 기회를 얻습니다. 이 접근 방식을 사용하면 여러 뷰 객체가 모델 객체의 다양한 표현을 제공할 수 있습니다. 모델을 다시 작성하지 않고도 모델 객체에 대한 새 뷰 객체를 생성할 수도 있습니다. 다음 그림은 모델과 세 가지 뷰를 보여줍니다.
표면적으로 이 예는 뷰와 모델을 분리하는 디자인을 반영합니다. 그러나 이 디자인은 보다 일반적인 문제에 적합합니다. 객체 간의 결합을 줄여서 한 객체가 변경되어도 다른 객체에 영향을 주지 않으며 다른 객체의 구현 세부 사항을 알 필요도 없습니다. 이 보다 일반적인 패턴은 관찰자 패턴에 설명되어 있습니다.
MVC 접근 방식의 또 다른 특징은 뷰 객체를 중첩된 방식으로 정의할 수 있다는 것입니다. 예를 들어, 버튼의 제어판은 중첩된 버튼 뷰 객체를 포함하는 복잡한 뷰 객체로 구현될 수 있습니다. 객체 관찰자의 사용자 인터페이스는 디버거에서 재사용할 수 있는 중첩된 뷰 객체로 구성될 수 있습니다. MVC 접근 방식은 CompositeView 클래스(View의 하위 클래스)를 사용하여 중첩된 뷰를 지원하며 해당 동작은 뷰 개체의 동작과 일치하며 뷰 개체를 사용할 수 있는 모든 상황에서 사용할 수 있습니다.
따라서 포지션뷰를 그 구성요소 중 하나로 취급하는 방식을 디자인(방법)이라고 볼 수 있다. 마찬가지로, 이 디자인은 보다 일반적인 종류의 문제를 추상화합니다. 즉, 상황에 따라 객체를 그룹화하고 그룹을 개별 객체처럼 취급하는 것입니다. 우리는 이 접근 방식을 설명하기 위해 복합 디자인 패턴을 사용합니다. 이를 통해 클래스의 계층 구조를 설정할 수 있습니다. 이 계층 구조 아래에서 일부 하위 클래스는 기본 개체(예: 버튼)를 정의하고, 다른 클래스는 원본 개체를 더 복잡한 개체로 조합하는 복합 개체(CompositeView)를 정의할 수 있습니다.
마찬가지로 MVC는 시각적 표현을 변경하지 않고도 뷰가 사용자에게 응답하는 방식을 변경할 수도 있습니다. 예를 들어 명령 키 대신 팝업 메뉴를 사용하여 키보드에 응답하는 방식을 변경할 수 있습니다. MVC는 이 반응 메커니즘을 제어 개체(컨트롤러)로 캡슐화합니다. 컨트롤러에는 기존 컨트롤러의 변형인 새 컨트롤러를 쉽게 만들 수 있는 클래스 계층 구조가 있습니다.
뷰 객체는 컨트롤러 객체의 인스턴스를 통해 특정 응답 전략을 구현합니다. 다양한 전략을 구현하려면 현재 인스턴스를 다른 컨트롤러 인스턴스로 바꾸면 됩니다. 런타임 시 뷰의 컨트롤러를 변경하여 뷰 개체가 사용자 입력(전략)에 응답하는 방식을 변경할 수도 있습니다. 예를 들어, 뷰 객체를 비활성화되도록 설정할 수 있습니다. 이는 사용자 입력에 응답하지 않음을 의미합니다. 이를 달성하려면 컨트롤러에 모든 입력 이벤트를 무시하라고 지시하면 됩니다.
이 뷰-컨트롤러 관계는 전략 디자인 패턴의 전형적인 예입니다. 소위 Strategy는 알고리즘을 나타내는 객체이다. 이는 변수가 많거나 데이터 구조가 복잡한 알고리즘(정적 또는 동적으로)을 교체하려는 경우 특히 유용합니다.
MVC에서는 다른 디자인 패턴도 사용됩니다. 예를 들어 팩토리 메소드 패턴은 뷰의 기본 컨트롤러 클래스를 설명하는 데 사용되며 데코레이터 패턴은 뷰에 스크롤 막대를 추가하는 데 사용됩니다. 하지만 MVC의 주요 패턴은 앞서 언급한 Observer, Composite 및 Strategy 디자인 패턴입니다.
Spring MVC 패턴 이해 방법
1. 원리
Spring MVC는 다음과 같이 Martin Flower의 "Enterprise Application Pattern"에서 정적 구성 Front Controller에 속합니다. 식물 분류법에서는 DispatchServlet을 사용하여 모든 *.do 요청을 가로채고 xml 파일의 구성에 따라 해당 Command 객체의 handlerRequest(request, response) 함수를 호출하는 동시에 종속 객체를 주입합니다.
우리의 컨트롤러 레이어는 handlerRequest(요청, 응답) 기능을 구현하는 일반 JavaBean입니다.
2. 장점
Struts와 비교한 Spring MVC의 장점:
첫째, Controller의 클래스 계층 구조는 느슨한 것부터 엄격한 것까지 선택할 수 있습니다. 하나의 HandleRequest() 함수만으로 인터페이스를 구현하거나 많은 콜백 함수와 함께 SimpleFormController 클래스를 사용할 수 있습니다.
둘째, Form Bean이나 Tapestry의 소위 객체 지향 페이지 개체가 필요하지 않으며 클래스 확장을 두려워하고 한 가지를 변경하기 위해 N 장소를 이동해야하는 사람들에게 가장 적합합니다.
셋째, 강력한 XML 구성 파일이 필요하지 않습니다. 선언적 프로그래밍은 좋지만 프레임워크에 강제로 적용할 경우 모든 것을 xml로 선언해야 하기 때문에 작성이 번거롭고 코드를 읽어야 합니다. .구성을 양면으로 보면 이해하기가 더 어렵습니다.
Webwork는 어떤가요? 실제로 사용해본 적은 없지만 MVC 프레임워크가 많이 필요하지 않기 때문에 Spring MVC의 Controller만으로도 요구 사항을 충족할 수 있으므로 웹워크를 구축하고 싶지 않습니다. 팀에 장애물을 설정하는 웹워크 세트는 또한 Spring과 ww2 사이의 향후 유지 관리 및 버전 업그레이드에 문제를 일으킬 것입니다. 실제로 추가해야 할 것이 있는 경우 Spring MVC 소스 코드의 양이 매우 적기 때문에 제품군을 쉽게 제어하고 확장할 수 있습니다.
3. 단순화
3.1. HandleRequest() 함수를 구현하기 위해 Controller를 직접 구현합니다.
우선 간단한 양식 컨트롤러는 제가 가장 좋아하는 것이 아닙니다. 모두 간단합니다. 그래서 때로는 컨트롤러 인터페이스를 직접 구현하기도 합니다. 이 인터페이스의 유일한 기능은 Front Controller가 호출하는 handlerRequest(request, response)입니다.
애플리케이션 객체가 필요한 경우(예: application.getRealPath()를 사용하려는 경우) webApplicationObjectSupport를 확장해야 합니다.
3.2. 각 컨트롤러는 일련의 관련 작업을 담당합니다.
하나의 컨트롤러가 여러 작업을 담당하는 것은 하나의 기능과 하나만큼 지루합니다. 수업. 그래서 저는 msg="insert"와 같은 URL 매개변수를 사용하여 일련의 관련 작업을 컨트롤러에 전달하는 가장 전통적인 방법을 사용했습니다. 프로덕션의 ROR 및 Groovy On Rails는 모두 이 모드에 있으며 Spring에는 MultiActionController도 지원됩니다.
위의 세 가지 모두 URL 매개변수를 컨트롤러의 기능에 직접 반영하며 Stripes의 디자인에서는 주석을 사용하여 url 작업과 응답 기능의 매핑을 표시할 수 있습니다.
3.3.XML 선언적 프로그래밍의 선택
내 선택은 매우 간단하다.어쨌든 Spring은 재컴파일하지 않고 필요할 때만 무언가를 변경한다. , XML에 항목을 동적으로 주입하기 전에.
jsp 경로 등은 모두 컨트롤러로 반환되어 정의됩니다.
mvc 모드에서 모델을 이해하는 방법
MVC(Model/View/Controller) 모드를 사용합니다. 해외에서는 더 많은 것 같습니다. Smalltalk에서 처음 등장한 것 같은 디자인 패턴입니다. MVC에는 세 가지 유형의 개체가 포함되어 있습니다. Model은 애플리케이션 객체이고, View는 화면에 표현되며, Controller는 사용자 인터페이스가 사용자 입력에 응답하는 방식을 정의합니다.
MVC(Model-View-Controller)는 1980년대 Smalltalk-80에 등장하여 현재 널리 사용되고 있는 소프트웨어 디자인 패턴입니다.
1. 모델
모델은 애플리케이션의 주요 부분입니다. 모델은 비즈니스 데이터 또는 비즈니스 로직을 나타냅니다.
2. 보기
보기는 사용자가 인터페이스를 보고 상호 작용하는 애플리케이션의 사용자 인터페이스 관련 부분입니다. .
3. 컨트롤러(controller)
컨트롤러의 임무는 사용자 인터페이스 데이터 표시를 제어하고 사용자 입력에 따라 모델 객체 상태를 업데이트하는 것입니다.
MVC의 출현은 기능 모듈과 디스플레이 모듈의 분리를 실현할 뿐만 아니라 초기 프로그램의 유지 관리성, 확장성, 이식성 및 구성 요소 재사용성을 향상시킵니다.
, 로그 함수와 디스플레이의 분리에 주의를 기울이지 않으면 프로그램이 복잡해지고 유지 관리가 어려워지는 경우가 많습니다. 많은 VB, Delphi 및 기타 RAD 프로그램에서 이 문제가 발생합니다. 오늘날의 C#이나 Java에서도 비즈니스 로직을 디스플레이 모듈에 작성하는 현상이 가끔 발생합니다
MVC 디자인 패턴은 오랫동안 제안되었지만 웹 프로젝트 개발에 MVC를 도입하는 것은 어렵습니다. . 주요 이유: 첫째, 웹 프로젝트 초기 개발에서는 프로그래밍 언어와 HTML의 분리가 어려웠습니다. CGI 프로그램은 문자열 출력 형식으로 HTML 콘텐츠를 동적으로 생성합니다. 이후 스크립팅 언어가 등장하면서 기존 방식을 뒤집어 스크립팅 언어로 작성된 프로그램을 HTML 콘텐츠에 삽입하는 방식으로 바뀌었다. 두 방법 모두 동일한 단점이 있습니다. 프로그래밍 언어와 HTML을 분리하지 못한다는 점입니다. 둘째, 스크립트 언어의 기능은 상대적으로 약하고 MVC 디자인 패턴을 지원하는 데 필요한 기술적 기반이 부족합니다. J2EE를 기반으로 한 JSP 모델 2가 등장하고 나서야 상황이 바뀌었습니다. JSP 기술을 사용하여 검사 기능을 구현하고, Servlet 기술을 사용하여 컨트롤러 기능을 구현하며, JavaBean 기술을 사용하여 모델 기능을 구현합니다.
JSP 모델 1 및 JSP 모델 2
SUN JSP에 나타납니다. Model1과 Model2라는 두 가지 사양이 초기에 개발되었습니다. Model2는 MVC를 어느 정도 구현했지만 적용이 만족스럽지 않습니다.
JSP Model 1
JSP Model 2
model2는 사용하기 쉽습니다. Controller가 여러 개 있습니다.
일부 사람들은 model2가 충분하지 않다고 느꼈기 때문에 Craig R. McClanahan은 2000년 5월에 Java 커뮤니티에 WEB 프레임워크를 제출했습니다. 나중에 Struts가 발생했습니다.
2001년 7월 Struts 1.0이 공식적으로 출시되었습니다. 이 프로젝트는 Apache Jakarta의 하위 프로젝트 중 하나이기도 합니다.
Struts는 본질적으로 Model2를 기반으로 구현된 MVC 아키텍처입니다. 여기에는 XML을 사용하여 리디렉션된 URL을 사용자 정의하는 중앙 컨트롤러가 하나만 있습니다. 액션을 사용하여 로직 처리
MVC 모델의 장점을 이해하고 설명합니다.
MVC 아이디어는 애플리케이션을 모델(모델), 뷰(검사) 및 컨트롤러의 세 가지 기본 부분으로 나눕니다. (제어) 프로세서), 이 세 부분은 최소한의 결합으로 함께 작동하여 애플리케이션의 확장성과 유지 관리성을 향상시킵니다.
MVC 모드와 3레이어 모드의 차이점은 무엇인가요?
와, 실제로 같은 의미라고 말하는 사람들도 있습니다.
3레이어 모드는 j2ee design 3층에 있다는 것은 여러분이 잘 아시는 내용이므로 자세한 내용은 다루지 않겠습니다.
MVC는 Java 디자인 패턴의 용어이며 이 세 가지 계층과 동일한 것은 아닙니다.
MVC: 모델, 뷰, 제어는 소프트웨어가 UI 인터페이스를 사용해야 하는 경우 모델 계층, 프레젠테이션 계층 및 제어 계층의 세 가지 계층으로 나누어야 함을 의미합니다.
그 이유는 모델은 데이터의 프로토타입을 표현하고, 프리젠테이션 레이어는 데이터를 그리고 표현하는 데 사용되기 때문입니다. 컨트롤은 이러한 데이터를 조작하는 데 사용됩니다.
사용자는 일반적으로 프레젠테이션 레이어에서 인터페이스를 보고 컨트롤 레이어를 사용하여 인터페이스를 제어합니다.
MVC 모드에는 팩토리 모드, 싱글톤 모드, 명령 모드 등과 함께 프로그래밍 언어라고 불리는 20개 이상의 디자인 모드가 있습니다. 이는 일상적인 프로그래밍 경험의 축적입니다. 우리는 프로그램을 설계할 때 프로그램의 프레임워크를 설계하기 위한 참고 자료로 사용할 수 있습니다.
마지막 단어: MVC의 본질은 전문적인 디스플레이 표시, 전문적인 로직 로직, 로직과 드로잉의 분리입니다. 반드시 세 개의 레이어일 필요는 없지만 더 많은 레이어가 있을 수 있습니다. MVC에서 요구하는 규칙을 충족하는 한 원하는 만큼 레이어를 가질 수 있습니다. 목적은 프로그램의 다양한 모듈 간에 가능한 한 많은 분리를 달성하는 것입니다.
어쩌면 우리가 말한 내용이 여러분을 다소 혼란스럽게 만들었을 수도 있으므로 저자는 20개 이상의 디자인 패턴을 배우러 갈 것을 강력히 권장합니다. 디자인 패턴을 배우면 프로그래밍 실력이 질적으로 향상됩니다. 정말 Java를 배우고 나서 사랑에 빠졌습니다. Java를 배우는 것을 과제로 생각했는데, 디자인 패턴을 배우고 나니 사랑에 빠졌습니다!
MVC 모델을 사용하는 이유와 MVC 모델의 장점은 무엇인가요
MVC를 사용하면 유지 관리가 용이하다는 것이 가장 큰 장점입니다. 과거에는 Java 코드와 프런트엔드 코드가 혼합되어 있었습니다. 유지 관리가 쉽지 않음
MVC 패턴과 팩토리 디자인 패턴을 이해하는 방법
1. MVC는 프레임워크 패턴에 속하지만 프레임워크와 디자인 패턴은 유사합니다. 근본적으로 다릅니다. 디자인 패턴은 특정 환경에서 반복되는 문제와 이를 해결하기 위한 솔루션에 대한 설명입니다.
2. 프레임워크는 프로그램 코드로 표현될 수 있으며 직접 실행되거나 복제될 수도 있습니다. 패턴의 경우, 디자인 패턴은 프레임워크보다 작은 요소로 표현될 수 있습니다. 프레임워크는 종종 하나 이상의 디자인 패턴을 포함하지만 동일한 패턴이 다양한 분야에 적용될 수 있습니다. 응용 프로그램의.
3. 프레임워크는 소프트웨어이고, 디자인 패턴은 소프트웨어에 대한 지식이라고 할 수 있습니다.
안드로이드와 iOS의 mvc 모드의 차이점
iOS 애플리케이션 개발을 배울 때 Cocoa Touch의 여러 디자인 패턴을 이해해야 합니다. 디자인 패턴에 관해 어떤 사람들은 그것이 단지 종이에 나온 이야기이고 허세라고 생각할 수도 있습니다. 여기서는 디자인 패턴이 얼마나 마술적인지에 대해서는 이야기하지 않고, iOS 프레임워크에서 사용된 디자인 패턴만 하나씩 분석해 보겠습니다.
iOS 개발을 배울 때 다음 디자인 패턴을 알아야 합니다:
타겟 액션 디자인 패턴;
알림 패턴
MVC 패턴
KVO(키-값 관찰)
싱글톤 패턴
위임 패턴
MVC 디자인 패턴
I MVC 디자인 패턴이 낯설지 않다고 생각하세요. Modal, View, Controller의 문자 그대로의 의미를 이해하면 이들의 목적은 데이터를 뷰에서 분리하는 것입니다. iOS 코코아 터치 프로그래밍에서는 MVC 메커니즘이 완전히 활용됩니다. MVC 다이어그램은 다음과 같습니다. MVC를 완전히 이해해야만 우아한 iOS 앱을 작성할 수 있습니다. MVC를 제대로 이해하려면 관련 개념(예: Delegate, Protocol, Notification 등)도 이해해야 합니다.
MVC 규칙에 따르면 Model은 View를 처리할 수 없습니다. Model은 데이터를 관리하며, Model의 데이터가 변경되면 해당 View를 업데이트해야 합니다. 이를 지원하는 메커니즘이 필요합니다. iOS 프레임워크는 이를 위해 알림과 KVO(키-값 관찰)라는 두 가지 지원 메커니즘을 제공합니다. KVO는 관심 있는 Key 객체에 대한 리스너를 등록하는 것으로 간단히 이해될 수 있습니다. 데이터가 변경되면 모든 청취자에게 방송이 전송됩니다.
MVC는 또한 View가 Modal을 직접 참조할 수 없으며 Controller에 의해서만 제어될 수 있다는 데 동의합니다. 컨트롤러는 뷰에 표시되는 데이터를 제어합니다. 우리는 View에 표시될 데이터가 Modal에서 온다는 것과 View에서 생성된 이벤트(예: Touch 이벤트)가 Controller에 알려야 한다는 것을 알고 있습니다. MVC는 직접적인 상호작용을 허용하지 않기 때문에 메커니즘을 제공해야 합니다.
예, iOS는 위임이라는 메커니즘을 제공합니다. 위임이라는 단어를 "위임"으로 번역하는 사람도 있고, "대리인"으로 번역하는 사람도 있습니다. 이름의 차이는 없습니다. 중요한 것은 Delegate를 어떻게 이해하느냐입니다.
Delegate 디자인 패턴은 UIView와 Controller 간의 느슨한 결합 상호 작용 문제를 해결하기 위해 도입되었습니다.
이해를 돕기 위해 iOS MVC의 개략도는 다음과 같습니다.
이 그림의 의미를 자세히 소개하겠습니다.
1. 그림에서 녹색 화살표는 직접 참조를 나타냅니다. 뷰에 대한 직접 참조는 IBOutlet에 반영됩니다. Button과 같은 View를 참조할 때. ViewController에서 IBOutlet UIButton * btn을 선언해야 합니다.
;
2. 그런 다음 View가 Controller와 어떻게 통신하는지 살펴보겠습니다. 이를 위해 iOS에는 세 가지 공통 모드가 있습니다.
뷰에 해당하는 Action Target을 설정합니다. UIButton의 Touch up 내부에 Action Target을 설정하는 것과 같습니다.
UIAlertViewDelegate, UIActionSheetDelegate, UITextFieldDelegate 등과 같은 뷰의 위임을 설정합니다.
UITableViewDataSource와 같은 뷰의 데이터 소스를 설정합니다.
위의 세 가지 모드를 통해 View는 특정 Controller가 누구인지 알지 못한 채 Controller와 통신할 수 있습니다. 이러한 방식으로 View는 Controller와 분리됩니다.
또한 iOS는 컨트롤러가 뷰에 의해 트리거된 이벤트를 수신할 수 있도록 Action-Target 모드도 제공합니다. View는 어떻게 데이터를 얻나요? iOS는 실제로 Protocol을 적용한 Data Source라는 개념을 제공합니다.
요약하자면 iOS MVC 프레임워크를 기반으로 하므로 Delegate 및 Protocol과 같은 개념에 대한 심층적인 이해가 필요합니다.