모델-뷰-어댑터
Model–view–adapter이 글은 검증을 위해 인용구가 추가로 필요하다. – · · 책 · · (2009년 3월) (이 템플릿 하는 |
MVA(Model-view-adapter) 또는 조정 컨트롤러 MVC는 소프트웨어 아키텍처 패턴과 다중 계층 아키텍처다.사용자에게 대량의 데이터를 제공하는 복잡한 컴퓨터 어플리케이션에서 개발자들은 종종 데이터(모델)와 사용자 인터페이스(뷰)의 우려를 분리하여 사용자 인터페이스에 대한 변경이 데이터 처리에 영향을 미치지 않도록 하고 사용자 인터페이스를 변경하지 않고 데이터를 재구성할 수 있도록 하고자 한다.MVA와 전통적인 MVC는 이 같은 문제를 해결하려고 하지만 두 가지 다른 스타일의 솔루션으로 해결하려고 한다.기존의 MVC는 모델(예: 데이터 구조와 스토리지), 뷰(예: 사용자 인터페이스), 컨트롤러(예: 비즈니스 로직)를 삼각형으로 배열하여 모델, 뷰 및 컨트롤러를 정점으로 하여 일부 정보가 컨트롤러의 직접 제어 밖에 있는 모델과 뷰 사이를 흐르게 한다.모델-뷰-어댑터는 모델, 어댑터 또는 조정 컨트롤러를 배열하여 모델-뷰-컨트롤러와 다소 다르게 이를 해결하며, 모델과 뷰 사이에 어떤 직접 연결도 없이 선형적으로 뷰를 본다.[1][2]
원칙
보기와 모델이 직접 통신하지 않음
뷰는 뷰와 모델 사이의 매개 컨트롤러 또는 어댑터를 통해서만 상호 작용할 수 있도록 모델에서 완전히 분리된다.이 배열을 통해 어댑터 또는 조정 컨트롤러만이 모델과 뷰에 대한 지식을 갖게 되는데, 이는 모델과 뷰 사이에서 조정 또는 조정(이름 어댑터와 중재자)만을 위한 어댑터 또는 조정 컨트롤러의 책임이기 때문이다.모델과 관점은 의도적으로 서로를 망각하고 있다.전통적인 MVC에서는 모델과 뷰가 서로 인식되어 있어, 데이터베이스와 같은 모델에 불리한 시각(예: 사용자 인터페이스) 우려의 결합이 허용될 수 있으며, 그 반대의 경우, 아키텍처가 데이터베이스의 스키마와 사용자 인터페이스의 정보 표시에 의해 더 잘 제공되었을 수 있다.완전히 서로에게서 벗어나고 급진적으로 서로에게서 멀어지게 했다.예를 들어, 텍스트 편집기에서 모델은 조각 테이블(예: 간격 버퍼 또는 연결된 선 목록 대신)일 수 있다.그러나 사용자 인터페이스는 현재 편집 세션이 시작된 이후 파일에 대한 편집의 최종 휴식 상태를 표시해야 하며, 작업 테이블의 꼼꼼한 원시 실행 취소 델타 및 증분 작업을 직접 오버로드하여 표시해서는 안 된다.
모델은 의도적으로 뷰를 망각한다.
이러한 우려의 분리는 정확히 동일한 어댑터 또는 동일한 종류의 어댑터를 통해 다양한 관점이 동일한 모델에 간접적으로 접근할 수 있도록 한다.예를 들어, Qt GUI, Microsoft MFC GUI, GTK+ GUI, Microsoft 등의 다양한 보기를 통해 하나의 기본 데이터 스토리지 모델과 스키마 및 기술에 액세스할 수 있다.NET GUI, Java Swing GUI, Silverlight 웹 사이트 및 AJAX 웹 사이트—여기서 (기존 MVC와는 달리) 모델은 이러한 사용자 인터페이스를 향해 어떤 정보가 흐르는지 완전히 망각한다.어댑터 또는 어댑터 클래스는 모델이 여러 개의 사용자 인터페이스를 지원하며 동시에 이 다양성을 지원한다는 사실을 완전히 망각하게 한다.모델에 있어서, 이러한 다중 유형의 사용자 인터페이스는 기술 유형을 망각한 일반 사용자의 여러 인스턴스처럼 보일 것이다.
뷰는 의도적으로 모델을 망각한다.
마찬가지로, 하나의 사용자 인터페이스는 조정 컨트롤러 또는 어댑터의 기반이 될 수 있는 다양한 다양한 모델을 의도적으로 망각하여 유지할 수 있다.예를 들어, 동일한 웹사이트는 Postgre와 같은 SQL 데이터베이스 서버에 의해 서비스될 수 있다는 사실을 망각할 수 있다.저장 프로시저를 통해 데이터베이스 서버에 비즈니스 로직을 내장하고 있고, 서버가 롤백할 수 있는 트랜잭션을 가진 SQL, Sybase SQL Server 또는 Microsoft SQL Server는 이러한 기능이 하나 이상 없는 MySQL과 같은 SQL 데이터베이스 서버에 의해 또는 (B) 비SQL RDF 데이터베이스에 의해서만 웹 사이트가 상호 작용하기 때문에 (C)컨트롤러 또는 어댑터 조정(모델과 직접 연결되지 않음).
동일한 모델-뷰 쌍 사이의 여러 어댑터
또한 하나의 뷰가 특정 모델에 대한 데이터를 표시하는 방식을 변경하기 위해 여러 어댑터를 생성할 수 있다.예를 들어, 서로 다른 어댑터는 서로 다른 원시 데이터 세트를 부과할 수 있으며, 이는 동일한 기본 데이터베이스와 외부로 표시된 동일한 웹사이트에 대해 서로 다른 비즈니스 논리를 부과한다.이 시나리오에서 다양한 어댑터 또는 조정 컨트롤러의 클래스는 동일한 데이터베이스 모델과 동일한 웹 사이트 뷰 사이의 비즈니스 로직의 변화를 나타낼 수 있다.
참고 항목
참조
- ^ Zamudio Lopez, Sheydi Anel; Santaolaya Salgado, Rene; Fragoso Diaz, Olivia Graciela (June 2012). "Restructuring Object-Oriented Frameworks to Model–View–Adapter Architecture". IEEE Latin America Transactions (in Spanish). 10 (4): 2010–2016. doi:10.1109/TLA.2012.6272488.
- ^ Thiruvathukal, George K.; Läufer, Konstantin (2018), "Managing Concurrency in Mobile User Interfaces with Examples in Android", Topics in Parallel and Distributed Computing, Springer, Cham, pp. 243–285, doi:10.1007/978-3-319-93109-8_9, ISBN 9783319931081