태그 보관물: design-patterns

design-patterns

웹용 MVC를 제외한 디자인 패턴이 있습니까? 알고 싶습니다. Registry,

MVC 외에도 웹 디자인 패턴이 무엇인지 알고 싶습니다.

Registry, Observer, Factory, ActiveRecord, … 및 MVC와 같은 디자인 패턴이 다른 디자인 패턴 및 폴더 구조 세트라는 것을 알고 있습니다.

MVC와 같은 디자인 패턴은 다른 디자인 패턴의 집합입니까?

편집 : 내 프로그래밍 언어는 PHP입니다.



답변

소프트웨어 개발에는 다른 패턴이 있습니다. MVP, MVVM, MVC 등 은 잘 알려진 것들 중 일부입니다. 그러나 해결하거나 사용하려는 특정 문제 나 기술을 정의해야합니다.

이러한 각 패턴은 특정 문제 세트를 해결하는 데 좋습니다. 예를 들어 MVP (Model View Presenter) 패턴 은 ASP.NET WebForms 개발에서 우려를 분리하는 데 도움이됩니다. 웹 페이지에서 데이터를 수집, 표시 및 저장하는 책임을 Model 개체, View 개체 및 Presenter 개체 등 별도의 개체로 나눕니다.

가장 유명한 디자인 패턴 요리 책은 Gang of Four (GoF) 디자인 패턴 입니다.

편집 : .NET 플랫폼에서 디자인 패턴을 구현하는 데 더 관심이 있다고 가정합니다.


답변

몇 주 전에 내가 본 좋은 패턴은 MOVE 입니다. MVC보다 조금 더 정교 해 보이지만 동일한 원리를 기반으로합니다. MVC의 한 가지 단점은 컨트롤러가 실제로 정말 커질 수 있다는 것입니다. MOVE 패턴을 사용하면이 문제를 약간 처리 할 수 ​​있습니다.

다른 패턴으로 명명 된 다른 패턴도 좋은 대안입니다.


답변

가장 먼저 설정해야 할 것은 프레임 워크 및 / 또는 MVC (또는 다른 디자인 패턴)가 유익한 지 여부를 결정하기 위해 정확히 수행해야하는 것입니다.

프레임 워크는 일반적인 프로그래밍 요구 사항 (예 : 데이터베이스 상호 작용, 양식 작성 및 유효성 검증, 사용자 인증 등)에 대한 솔루션을 제공하면서 개발을위한 일관된 플랫폼을 제공합니다.

PHP의 경우 최소한 MVC / HMVC 디자인 패턴은 사용 가능한 주류 프레임 워크 (예 : Zend , CakePHP , CodeIgniter 등) 를 지배하는 경향이 있지만 사용할 수있는 다양한 디자인 패턴이 있습니다.

MVC는 데이터 모델링과 처리 로직을 뷰 / 프레젠테이션 레이어 (견고하고 확장 가능한 애플리케이션을 생성하기 위해 바람직하다고 생각되는 것)에서 분리하는 확립되고 이해 된 방법을 제공하기 때문에 매우 인기가 있습니다.

이 노트에 중요하다 (그리고 ElYusubov의 대답 @에 코멘트에 @Marjan Venema의에 의해 표현 된대로) MVC는, MVP, MVVM 다른 MV가 X (적어도 원칙적으로) 패턴이 모두 같은 ‘디자인 패턴’.

일반적으로 다른 디자인 패턴은 모두 다른 목적으로 사용되며 (종종 미묘하게) 특정 언어를 염두에두고 개발 된 경우도 있습니다. 그러나 진정한 ‘디자인 패턴’은 프로그래밍에 대한 어렵고 빠른 규칙이 아니며 프로그램 구현과 디자인 요구 사항 및 논리적 기능에 대한 철학적 / 아이디어 적 이해에 가깝습니다.

리서치는 다른 프로그래밍 원칙과 모범 사례에 대해 알아볼 수있는 가장 좋은 방법입니다. 시작하기위한 Wikipedia 링크는 다음과 같습니다.

실제로 IMO를 사용하여 웹 사이트를 작성하기 시작할 때까지는 MVC 패턴을 완전히 이해하지 못했습니다.

일단 프로그래밍 개념과 모범 사례를 이해하면이를 사용하여 고유 한 시스템을 구축하여 기존의 ‘패턴’준수 여부에 관계없이 직면하고있는 특정 문제를 해결하고 필요를 충족시킬 수 있습니다.

해결해야 할 특정 문제가 없다면 일반적인 프레임 워크 중 하나를 배우는 것이 가장 좋습니다.


답변

가장 유명한 예 중 하나는 Knockout.js 인데, 이는 MVVM 디자인 패턴 을 사용하는 자바 스크립트 프레임 워크 입니다 . MVC 프레임 워크 Backbone.js와 Knockout.js를 비교하는 스택 오버플로에 대한 훌륭한 기사가 있습니다 .

참고로 MVVM 디자인 패턴은 Martin Fowler의 PM 디자인 패턴을 전문으로하여 Microsoft에서 시작되었습니다. MVVM은 WPF 응용 프로그램에서 광범위하게 사용됩니다.


답변

ElYusubov가 지적했듯이 비교적 주류적인 예를 찾고 있다면 ASP.Net 프레임 워크에는 오랫동안 MVP 및 MVVM 패턴이 있습니다. MVC와 MVVM의 주요 차이점 중 하나는 엔터티가 업데이트되는 방식입니다. MVC는 웹 응용 프로그램의 기존 상태 비 저장 또는 비 상태 비 저장 방식에 더 적합합니다. ASP.Net 프레임 워크는 상태를 양식에 임베드하여 각 요청마다 복원 할 수 있도록하여이 문제를 해결하려고했으며 MVP 및 MVVM 패턴이 더 적합합니다.

HTML5를 사용하면 응용 프로그램의 상태가 점점 더 클라이언트에 증가하면서 점점 더 많은 JavaScript가 사용됩니다. 이로 인해 MVVM 프레임 워크가 부활 할 수 있으며 Knockout JS 가 그 예입니다.


답변

야생에서 대부분의 패턴은 MVC 또는 MVC의 일부 맛입니다. 결국 데이터 (모델), 표현 (보기) 및 데이터와의 상호 작용 (컨트롤러)을 분할하는 것이 합리적입니다. 80 년대에 설립 된 MVC를 살펴보면 웹 프레임 워크가 아니었다는 것을 알게 될 것입니다. 따라서 웹에서 너무 많이 부담되는 것으로 나타났습니다.

다른 잘 알려진 패턴은 서비스 지향 아키텍처 (SOA)입니다. 이를 기반으로하는 현대적인 접근 방식은 서버에 MVC (또는 특징)를 설치하고 작업 할 수있는 서비스 만 노출하는 것입니다. 클라이언트쪽에는 HTML5 및 JavaScript 기반 웹 응용 프로그램 (예 : 트위터 또는 링크 된 웹)과 같은 다른 MVC 스타일 응용 프로그램이 있습니다. 클라이언트 응용 프로그램은 서버 측 서비스 (서버의 “보기”)를 모델로 사용합니다. IMHO, 이것은 최신 기술이며 아마도 서버 측에서만 MVC를 밀어 넣을 것입니다.


답변

나는 개인적으로 Resource Methods Representation 아이디어를 사용하는 것을 구현하려고 노력 하고 있지만,이 단계에서는 대부분 다른 것보다 실험 일뿐입니다. MVC보다 HTTP 요청 / 응답을 더 잘 모델링한다는 점에서 주목할만한 점이 있습니다 (단기 요청 / 응답 세션이 아닌 단일 컴퓨터에서 실행되는 오래 지속되는 응용 프로그램을 의미합니다). 그러나 GET, POST, PUT, DELETE 등을 처리하기 위해 자원에 메소드를 넣으면 자원이 프론트 엔드에 연결되는 단점이 있습니다. 나는 그것을 다른 층으로 분리하려고 생각하고 있습니다.