MVC(Model-View-Controller)
*MVC(Model-View-Controller) 디자인 패턴
: 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴 !
*Model
: 애플리케이션의 정보, 데이터
: 사용자가 편집하길 원하는 모든 데이터를 가지고 있음 !
: 뷰, 컨트롤러에 대해 어떤 정보도 알지 말아야함!
-> 데이터 변경 일어나면 모델에서 화면 UI를 직접 조정해서 수정할 수 있도록 뷰를 참조하는 내부 속성값 가지면 안됨 !
: 변경이 일어나면 변경 처리 !
-> 변경 일어나면 이를 전달, 수신할 수 있는 처리 !
-> 모델은 재사용가능, 다른 인터페이스에서도 변하지 x
*View
: 사용자 인터페이스 요소 ( input 텍스트, 체크박스 등 )
-> 데이터 및 객체의 입력, 그리고 보여주는 출력 담당 !
-> 데이터 기반으로 사용자들이 볼 수 있는 화면 !
: 모델이 가지고 있는 정보 따로 저장 x
-> 정보 전달 받게 될텐데 그 정보 유지 위해 뷰 내부에 저장하면 안됨
: 모델, 컨트롤러(다른 구성요소)에 대해 몰라야함
-> 자기 자신의 동작만 알아야함 ! -> 데이터를 받으면 화면에 표시해주는 역할 !
: 변경이 일어나면 변경통지 !
-> 사용자가 화면에 표시된 내용 변경하면 이를 모델에게 전달해서 모델 변경해야함 -> 변경통지 !
-> 재사용가능 -> 다른 정보 표현할 때 쉽게 설계 !
*Controller
: 데이터, 사용자인터페이스 요소 잇는 다리 역할 !
-> 사용자가 데이터 클릭, 수정하는 것에대한 이벤트들 처리 !
: 모델 or 뷰에 대해 알고 있어야함
: 모델, 뷰의 변경 모니터링 해야함
-> 모델 or 뷰의 변경 통지 받으면 이를 해석해서 각각의 구성 요소에게 통지 !
-> 애플리케이션의 메인 로직 담당 !
*사용 이유?
: 서로 분리되어 각자의 역할에 집중 -> 유지보수성, 애플리케이션의 확장성, 유연성 증가 !