MVC란

https://velog.velcdn.com/images/dnjssud15/post/f3e37d4b-3368-44b7-936c-a3ec5a7058c6/image.png

model이 컨트롤러에게 접근하고 controller는 view에 접근하고 view는 또 user에게 접근하고 user가 또 컨트롤러에게 접근한후 컨트롤러는 다시 모델에게 도달하는 그림을 볼수있습니다.

그렇다면 model이란 무엇일까요?

Model : 데이터를 담아주는 클래스 (dto 등등)

모델은 다음과 같은 규칙을 가지고있다고 합니다.

1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다.
2. 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 한다.
3. 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야만 한다.
또한 모델은 재사용가능해야 하며 다른 인터페이스에서도 변하지 않아야 합니다.

그래서 모델은 담아주는 공간이라고 칭할수 있는 것입니다.

Controller : 데이터에 대한 제어를 담당하는 클래스 (controller클래스) 즉, 데이터와 사용자인터페이스 요소들을 잇는 다리역할이라고 볼수 있습니다.

  1. 모델이나 뷰에 대해서 알고 있어야 한다.
  2. 모델이나 뷰의 변경을 모니터링 해야 한다.

View : 데이터를 시각화할수 있도록 도와주는 공간 (html, javascript 등등)

  1. 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
  2. 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 된다.
  3. 변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 한다. 재사용가능하게끔 설계를 해야 하며 다른 정보들을 표현할 때 쉽게 설계를 해야 합니다.

MVC패턴을 사용하는 이유와 이점

MVC구조를 이용해서 작성을 하는이유는 결론적으로는 클래스가 각각 하나의 역할만을 하도록 만들기 위해서입니다. 이렇게 작성된 코드는 각각의 역할만 하기에 유지보수성이 뛰어납니다. 이를 역할 분리 또는 관심사 분리 라고 합니다.

서로 분리되어 각각의 역할을 하게된다면 유지보수성 뿐 아니라 어플리케이션을 확장하는데에 있어서 용이할수 있고, 중복적인 코드를 작성하지 않아도 되는 이점을 가질수 있습니다.

하지만, MVC패턴은 디자인 패턴 중 하나로서 결국 프로그래밍의 효율을 위한 것입니다. 무조건적으로 MVC패턴으로 작성하라는 법은 없으므로 알아두면 좋다 정도로 생각하면 될것같습니다. MVC패턴은 결국 "어떻게 나눌 것인가"에 대한 해답 중 하나입니다. 어떤 특정한 역할들에 대해 역할분담을 할 때 가이드라인을 제시하는 방법 중 하나가 바로 MVC패턴이라는 것입니다.

관심사 분리

객체지향 프로그래밍 : 객체 지향 프로그래밍은 컴퓨터 프로그래밍을 명령어의 목록에서 보는 시각에서 벗어나 객체들의 모임으로 파악하고자 하는 것, 각각의 객체는 메시지를 주고받고 데이터를 처리할수 있습니다 (협력관계)

객체지향 프로그래밍의 이점 : 프로그램을 유연하고 변경에 용이하게 만들어줍니다.

유연하고 변경에 용이하다??

레고 블럭 조립하듯이 컴포넌트를 쉽고 유연하게 변경하면서 개발할 수 있습니다. => 즉 다형성에 초점을 두고있습니다.

다형성 : 어떤 객체의 속성이나 기능이 상황에 따라 여러 가지 형태를 가질 수 있는 성질