MVC(model–view–controller)
는 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴
입니다. 이 패턴을 성공적으로 사용하면, 사용자 인터페이스
로부터 비즈니스 로직
을 분리
하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게
고칠 수 있는 애플리케이션을 만들 수 있습니다. MVC에서 모델
은 애플리케이션의 정보(데이터)
를 나타내며, 뷰
는 텍스트, 체크박스 항목 등과 같은 사용자 인터페이스 요소
를 나타내고, 컨트롤러
는 데이터와 비즈니스 로직 사이의 상호동작을 관리
합니다.
DATA
, 정보
들의 가공을 책임지는 컴포넌트를 의미합니다.👉 규칙
- 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 합니다.
- 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 합니다.
- 변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야만 합니다.
유저 인터페이스(User interface)
를 의미합니다.👉 규칙
- 모델이 가지고 있는 정보를 따로 저장해서는 안됩니다.
- 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 됩니다.
- 변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 합니다.
모델(Model)
과 뷰(View)
사이를 이어주는 브릿지(Bridge)
역할을 의미합니다.👉 규칙
- 모델이나 뷰에 대해서 알고 있어야 합니다.
- 모델이나 뷰의 변경을 모니터링 해야 합니다.
결합도
를 낮출 수 있습니다.유지보수
시에도 특정 컴포넌트만 수정하면 되기 때문에 보다 쉽게 시스템 변경이 가능합니다.가독성
,확장성
,재사용성
이 증가합니다.복잡한 대규모 프로그램의 경우 다수의 뷰와 모델이 컨트롤러를 통해 연결되기 때문에 컨트롤러가 불필요하게 커지는 현상
이 발생합니다. 복잡한 화면을 구성하는 경우에도 동일한 현상이 발생하는데 이를 'Massive-View-Controller' 라고 합니다.
스터디 활동을 위해 기록하고 있습니다.
다르거나 추가해야할 내용이 있다면 언제든지 코멘트 남겨주세요 :)
✉ dmsp1234@gmail.com
Massive-View-Controller 그림 어디에서 참고하셨나요? Controller가 중간에 있어야 할 것 같은데 그렇지 않아서 참고하신 글을 보고 싶습니다.