MVC
Apple : MVC 디자인 패턴
MVC 패턴은 애플리케이션의 구성요소를 역할에 따라 Model-View-Controller
3가지 형태로 나눈다.
MVC는 CoCoa 애플리케이션을 위한 좋은 디자인으로 여러 장점을 가지고 있다.
장점
- 재사용성이 좋다.
- 인터페이스가 잘 정의된다.
- 변화하는 요구사항에 잘 적응하고 확장 가능성이 좋다.
많은 cocoa 아키텍처와 기술은 MVC 기반으로 되어 있고, 사용자 정의 타입은 MVC 역할 중 하나를 수행하게 해야한다.
구성요소
MVC 패턴은 뷰 객체는 모델 객체와 분리되어 있다는게 특징인데 각 객체를 살펴보면 다음과 같다.
1. Model
모델은 데이터를 보유하고 해당 데이터를 조작하는 논리를 정의
- 데이터를 캡슐화하고, 데이터를 조작하고 처리하는 로직을 연산한다.
- 다른 객체들과
일대다(1:many)
관계를 가질 수 있다.
- 응용 프로그램의 지속 상태에 대한 데이터는 모델 객체에 존재해야 한다. (파일이나 데이터베이스에 저장돼있는지 상관없이)
- 뷰 객체와 명시적인 연결이 없어야 한다.
Communication
- 뷰 객체에서의 사용자 작업을 컨트롤러 객체를 통해 전달받아 모델 객체의 생성 또는 수정을 발생시킨다.
- 모델 객체 변경 -(컨트롤러에게 알리기)-> 컨트롤러 -(뷰 객체에 전달)-> 뷰 객체 업데이트
2. View
정보를 사용자에게 표시하는 화면
- 사용자가 볼 수 있는 응용프로그램의 객체
- 뷰는 재사용과 구성 가능한 경향이 있음
- 뷰 객체의 주요 목적은 데이터를 표시하고 해당 데이터를 편집할 수 있게 하는 것이다.
Communication
- 컨트롤러 객체를 통해 모델 객체의 데이터 변화를 알 수 있다.
- 컨트롤러 객체를 통해 사용자가 변경한 데이터를 모델 객체에 전달한다.
ex) 텍스트 필드에 텍스트 넣기
3. Controller
컨트롤러 객체는 뷰와 모델의 중개인 역할을 한다
- 컨트롤러는 뷰와 모델의 통로로 뷰에서 일어난 변화를 모델이 알게하고, 반대로도 역시 모델에서의 변화를 뷰가 알게한다.
- 응용 프로그램에 대한 설정과 조정을 수행하고, 다른 객체의
life cycle
을 관리할 수 있다.
Communication
- 뷰에서 수행된 사용자의 작업을 해석하여 새로운 데이터나 변경된 데이터를 모델 객체에 전달한다.
- 모델에서 변화가 있을 때 해당 데이터를 뷰 객체로 전달해 표시할 수 있게 한다.
소프트웨어 아키텍처
소프트웨어 골격이 되는 기본구조
- 소프트웨어의 뼈대나 고수준의 기반을 담당한다.
- 모든 구성 요소, 구성 요소가 서로 상호 작용하는 방식, 구성 요소가 작동하는 환경, 소프트웨어 설계에 사용되는 원칙이 포함된다.
- 소프트웨어의 구성요소의 관계를 표현하고 소프트웨어의 설계와 업그레이드를 통제하는 지침과 원칙
장점
- 시스템이 구축되기 전에 소프트웨어 시스템의 동작을 분석하기 위한 기반을 제공한다.
- 요소와 결정을 재사용할 수 있는 기반을 제공한다.
- 시스템의 개발, 배포 및 유지 관리 수명에 영향을 미치는 초기 설계 결정을 지원한다.
- 이해 관계자와의 의사 소통을 촉진하여 그들의 요구를 더 잘 충족시키는 시스템에 기여한다.
- 리스크 관리에 도움이 된다.
- 비용 절감이 가능하다.
디자인 패턴
프로그램 개발에서 자주 일어나는 문제를 해결하기 위한 방법으로 이후에도 재사용할 수 있는 형태로 가공한 솔루션
- 모듈정도의 단위로 클래스 범위, 함수 목적등 코드 수준의 디자인이다.
- Gof(Gang of Four) 사인방이 <Design Patterns>을 출판하며 널리 알려졌다.
ex) 생성 패턴(싱클턴 패턴), 구조 패턴(프록시 패턴, 브리지 패턴), 행동 패턴(책임 연쇄 패턴, 옵저버 패턴), 아키텍처 패턴(모델-뷰-컨트롤러 패턴) 등
참조
위키피디아 - 디자인 패턴(책)
위키피디아 - Software Architecture