위로 아래

디자인 패턴

디자인 패턴 : 객체 지향 프로그래밍 설계 시 의사소통 수단의 일종.

  1. 협업 개발 시 말로 설명하는 하는 것보다 패턴 기반으로 설명하는 것이 직관적이다
  2. 개발 시 발생하는 문제들은 이미 선임들이 해결했던 문제들이고, 그 해결책을 디자인 패턴으로 정리해놓았다. 자주 발생하는 문제들을 피하기 위해 사용되는 패턴.
  3. 결국 패턴보다는 간결한 코드베이스가 가장 중요하다. 패턴에 의존하지 말고, 효율적인 방법을 좇다가 패턴이 필요할 때 써야 한다.
  4. 23개의 패턴이 수록된 GoF가 가장 유명하다.

 

 


MVC 디자인 패턴

MVC 디자인 패턴 (Model View Controller)

  1. 모델, 뷰, 컨트롤러 세 가지 형태로 나누어 개발하는 방법론
  2. 비즈니스 처리 로직과 사용자 인터페이스 요소들을 분리시켜서 서로 영향 없이 개발하기 수월하다
  3. 유지보수가 편하다.
  4. 유저가 Controller를 조작하면, 컨트롤러가 model을 통해 데이터를 가져오고, 그 데이터를 view를 통해 유저에게 보여주는 방식

 

 


MVC 구성

Model

  1. 데이터 처리 역할.
  2. 데이터베이스와 연동하는 DAO (Data Access Object)와 데이터 구조를 표현하는 DO(Data Object) || Entity로 구성.
  3. 모델의 규칙
    1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다
    2. 뷰나 컨트롤러에 대한 어떠한 정보도 알지 못해야 한다
    3. 변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야 한다

 

 

View

  1. 화면에 출력하는 역할.
  2. Controller 하위에 종속되어, Model이나 Controller가 보여주려하는 것들을 최종 사용자에게 화면(UI)로 출력.
  3. HTML, CSS, JavaScript를 모아둔 컨테이너.
  4. 사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어온다.
  5. 뷰의 규칙
    1. 모델이 가지고 있는 정보를 따로 저장해서는 안 된다
    2. 모델이나 컨트롤러와 같이 다른 구성 요소를 몰라야 한다
    3. 변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야 한다

 

 

Controller

  1. 사용자에게 입력을 받고, Model과 View를 중개하는 역할
  2. 사용자의 요청사항을 파악하고, 그 요청에 맞는 데이터를 Model에 전달하고, 응답 받은 데이터를 View에 반영해서 사용자에게 알린다
  3. 컨트롤러의 규칙
    1. 모델이나 뷰에 대해서 알고 있어야 한다
    2. 모델이나 뷰의 변경을 모니터링해야 한다

 

 

 


모델 

모델 1

  1. JSP에서 출력과 로직을 전부 처리하는 모델
  2. Controller 영역에 view 영역을 같이 구현하는 방식
  3. Javabean Service Class 이용

 

 

 

모델 2

  1. JSP에서 출력만 처리하고, 서블릿에서 로직을 처리하는 모델.
  2. Controller, Model, View를 모두 분리
  3. HTML 소스와 Java 소스를 분리해놓아, 확장이나 유지보수가 편하다.

 

 

 


MVC 모델의 한계

  1. 대규모 MVC 어플리케이션 (Massive View Controller) : 복잡한 화면을 구현하게 되면 명령을 내리는 Controller가 너무 비대해져, 새 기능을 추가하기도 어렵고 코드 분석이나 테스트도 어려워진다.
  2. 보완하기 위해 파생된 패턴들 : MVP, MVVP, Viper, Clean Architecture, Flux, Redux, RxMVVM 등