✅ MVC 디자인 패턴과 같이, 코드를 각각 다른 부분으로 나누어 작성해야 하는 이유를 이해할 수 있다.
✅ Model, View, Controller가 각각 어떤 역할을 하는지 이해할 수 있다.
MVC 란? (Model-View-Controller)
개발 할 때 (모델-뷰-컨트롤러) 3가지 형태로 역할을 나누어 개발하는 방법
MVC를 사용하게 되면 인터페이스와 비즈니스 로직을 분리해 각자의 역할에 집중할 수 있게 개발을 할 수 있다는 장점이 있다
이렇게 개발을 하게 된다면 유지보수가 쉬워지고 애플리케이션의 확장성과 유연성이 증가하고, 중복코딩이라는 문제점도 사라지게 된다
*유연성: 여기서 유연성이라는 것은 클라이언트의 새로운 요구사항에 대해 최소한의 비용으로 보다 유연하게 대처할 수 있는 것을 말한다
*비즈니스로직: 프로그램의 논리구조
MVC는 모델-뷰-컨트롤러의 세 가지로 구성되어 있다
사용자가 컨트롤러를 조작하면 컨트롤러는 모델을 통해 데이터를 가져오고 그 데이터를 바탕으로 시각적으로 보여주는 뷰를 제어해서 사용자에게 전달한다
앱이 포함해야할 정보,데이터를 가지고 있다
앱안에 체크박스가 있다면 체크박스의 위치 크기 색 등등 정보를 가지고 있는 것이다
모델을 변경하도록 요청하는 이벤트를 보냈을 때 이를 수신할 수 있는 처리 방법을 구현해야 하고 데이터가 변경이 된다면 이벤트를 발생시켜 전달해야 한다
데이터의 상태가 변경되면 모델은 일반적으로는 뷰에게 알리고 가끔 업데이트된 뷰를 제거하기 위해 다른 로직이 필요한 경우에는 컨트롤러에게 알려준다
데이터를 받아서 뷰는 화면의 변경된 최신 상태를 보여주고 컨트롤러는 데이터의 변화에 따라서 실행해야 하는 명령 추가,수정,제거 등등을 할 수 있다
구현에 따라서 다르게 모델이 알려주는 것 대신 뷰나 컨트롤러가 직접 모델의 상태를 읽어 오기도 한다
ex) 쇼핑몰에서 모델은 리스트 항목이 가지고 있어야 하는 데이터 품목, 가격, 사진 등과 이미 존재하는 리스트 항목이 무엇인지를 지정한다
뷰는 앱의 데이터를 보여주는 방식을 정의하고
사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어 온다
ex) 쇼핑몰에서 뷰는 항목이 사용자에게 보여지는 방식을 정의하고
표시할 데이터를 모델에게 받아온다
데이터 - 사용자인터페이스를 연결하는 역할을 한다
사용자가 앱을 클릭하고 데이터를 수정했다면 입력에 대한 응답으로 모델 및/또는 뷰를 업데이트하는 로직을 포함한다
ex) 쇼핑몰 장바구니는 제품을 담거나 제거할 수 있게 해주는 입력폼과 버튼이 존재한다
버튼을 누르는 등의 액션을 취하면 데이터가 변경되어 모델이 업데이트 되고 입력이 컨트롤러에게 전송 -> 모델을 처리 -> 업데이트 된 데이터를 뷰로 전송한다
ex) 데이터를 변경하는 것이 아닌 쇼핑몰 제품을 가격이 낮은순서 높은순서로 정렬하는 것과 같은 다른 형태로 나타내기 위해서 뷰를 업데이트 할 때는 컨트롤러는 모델을 업데이트 할 필요없이 바로 처리가 가능하다
컨트롤러는 모델에 명령을 보내서 모델의 상태를 변경할 수 있고 (한글에서 문서 편집)
컨트롤러가 관련된 뷰에 명령을 보냄으로써 모델의 표시 방법을 바꿀 수 있다. (문서 스크롤)
MVC는 개발 할 때 (모델-뷰-컨트롤러) 3가지 형태로 역할을 나누어 개발하는 방법이다
모델은 데이터를 가지고 앱이 어떤 행동을 할 것인지 알려준다
컨트롤러는 모델이 데이터를 어떻게 처리해야 하는지 알려주고 화면과 모델, 뷰를 연결시켜 준다
뷰는 데이터를 받아 화면에 보여주는 역할을 한다