웹 개발의 기본이 되는 네트워크에 대해서 공부를 해봤습니다. 블로그, 각종 위키등을 참조하였습니다.

MVC패턴

소프트웨어 공학에서 고안해낸 소프트웨어 개발 방법으로 매우 강력한 컴파운드 패턴 중 하나이다. MVC = Model, View, Controller 의 약자. 패턴 흐름도에 따라서 시각적 요소와 비즈니스적 요소를 서로의 영향 없이 제어(수정) 할 수 있는 구조를 뜻한다.

  1. Model : 모든 데이터, 상태, 어플리케이션 로직이 포함됨. 뷰와 컨트롤러에서 모델의 상태를 조작하거나 가져오기 위한 인터페이스를 제공하고 모델에서 자신의 상태 변화에 대해서 옵저버들에게 알려주긴 하지만 기본적으로 모델은 뷰와 컨트롤러에 별 관심이 없다.
  2. View : 유저에게 보여지는 시각적 요소. 체크박스, 텍스트박스 등등. 모델을 표현하는 방법을 제공하는 사용자 인터페이스이다. 화면에 표시되어야 하는 데이터를 모델에서 직접 가져온다.
  3. Controller : M과 V의 상호작용을 관리한다. 사용자가 뷰를 통해 정보를 입력하면, 정보를 모델에게 넘겨주는 일을 한다. 하지만 단순 전달뿐만 아니라 사용자가 입력한 정보를 해석해서 그것을 바탕으로 모델을 조작하는 일을 하기도 한다. 또한 컨트롤러는 뷰와 모델의 결합을 끊어주는 역할도 한다. 뷰와 컨트롤러를 느슨하게 결합시켜놓으면 더 유연하고 확장성이 좋은 디자인을 만들 수 있다.

주의! 뷰에서 컨트롤러의 역할을 직접 처리할 수 있지만 권장하지 않는다. 뷰가 맡는 역할이 커지기 때문에 유지보수하기가 어려워지기도 하고, 뷰를 다른 모델과 사용하기 힘들어질 가능성이 크기 때문이다.

MVC패턴의 장점은 각각의 요소들만 따로 수정이 가능하다는 점이다. 특히 뷰는 지속적으로 수정사항이 생기기 때문에 MVC패턴이 잘 만들어져 있으면 유지보수에 용이하다.

단점으로는 이러한 M,V,C를 나눠놓는 개념이 복잡하고 이 패턴을 토대로 좋은 어플리케이션을 개발하기위해서는 숙련된 개발스킬이 요구된다. MVC패턴은 해당 패턴만 사용하는것보다 다른 여러 종류의 패턴을 함께 사용해서 디자인하는것이 더 효율적이다.

알아볼것

  1. 다층구조
  2. 옵저버 패턴
  3. 스트래티비 패턴
  4. 컨포지트 패턴

참고

참고: 플포저 블로그