Design Pattern ?
즉, 어떠한 코드 설계 구조를 한단어로 정의한 것이다.
따라서 복잡한 설계 구조이더라도 각 디자인 패턴에 대해 파악하고 있으면 장황한 설명없이 개발자간 원할한 의사 소통이 가능하다.
ex) 옵저버, 싱글톤, MVC, MVP, MVVM .. etc
MVC (Model-View-Controller)
1) User가 화면 Button 클릭
2) View의 Button 속성이 클릭됨으로 변경
3) Controller가 View의 변경 사항을 모니터링하여 Button 클릭 이벤트를 수행
4) 데이터를 변경하기 위해 Model에 접근
5) Model은 Controller로부터 받은 정보를 바탕으로 데이터 가공하여 반환
6) 반환된 데이터를 바탕으로 Controller가 View에 접근
7) View의 속성이 변경되고 화면이 구성이 바뀜
8) User는 바뀐 화면을 인지
동작 구조를 바탕으로 생각해볼 때, 아래 그림이 개념에 더 가까울 것 같습니다.
장점
1) 비즈니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행가능
2) 중복 코드 제거에 유리함
단점
MVC에서 View는 Controller에 연결되어 화면을 구성하는 단위요소이므로 다수의 View들을 가질 수 있다. 또한 Model은 Controller를 통해서 View와 연결되어지지만, 이렇게 Controller를 통해서 하나의 View에 연결될 수 있는 Model도 여러개가 될 수 있다.
즉, 수정 시 테스트와 코드 파악이 매우 힘들어진다. MassiveViewController (대규모 MVC 어플리케이션)이라고 부른다.