1. 디자인 패턴이란?
잠깐 내가 갖고 있는 "JAVA 객체지향 디자인패턴"의 책의 내용을 빌려서 얘기하겠다.
디자인 패턴이란 소프트웨어를 설계할 때 특정 맥락에서 자주 발생하는 고질적인 문제들이 또 발생했을 때 재사용할 수 있는 훌륭한 해결책이라고 한다.
디자인 패턴 구조는 콘텍스트(context), 문제(problem), 해결(solution) 이라는 3개의 필수적인 요소로 구성된다.
- 콘텍스트(Context)란, 문제가 발생하는 여러 상황을 기술한다. 즉, 패턴이 적용될 수 있는 상황을 나타낸다. 경우에 따라서는 패턴이 유용하지 못한 상황을 나타내기도 한다.
- 문제(Problem)란, 패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈들을 기술한다. 이때 여러 제약 사항과 영향력도 문제 해결을 위해 고려해야 한다.
- 해결(Solution)이란, 문제를 해결하도록 설계를 구성하는 요소들과 그 요소들 사이의 관계, 책임, 협력 관계를 기술한다. 해결은 반드시 구체적인 구현 방법이나 언어에 의존적이지 않으며 다양한 상황에 적용할 수 있는 일종의 템플릿이다.
예를 들면,
콘텍스트는 클래스가 객체를 생성하는 과정을 제어해야 하는 상황이고,
문제는 어떤 방식으로 클래스에서 생성되는 객체의 수를 제어하고 클래스의 인터페이스에 접근하는 것을 제어하는지,
또 해결은 클래스의 생성자를 public으로 정의하지 말고 private이나 protected로 선언해 외부에서 생성자를 이용할 것인지 결정하는 단계라고 한다.
소프트웨어 설계 시 특정 맥락에서 자주 발생하는 문제 해결 방법을 재사용할 수 있는 방법이라고 생각하면 좋을 것 같다. 즉, 아키텍처 패턴에서 컴포넌트의 내부 구조를 대상으로 한 클래스/객체의 구조와 협업 방법을 패턴화한 것이다.
2. MVC와 MTV
웹 프로그래밍에서 자주 사용되는 디자인 패턴은 MVC이다.
MVC란 Model-View-Controller의 약어인데, MTV는 이름만 조금 다를 뿐 MVC와 동일한 패턴이라고 한다.
- Model은 데이터 구조를 말한다. 즉, db의 구조를 결정한다.
- View는 말 그대로 사용자에게 보여지는 UI 부분이다. 즉, 웹페이지라고 생각하면 될 것 같다.
- Controller는 기능, 로직 부분이라고 생각하면 된다.
장고에서 MTV는 Model-Template-View 이다.
MVC와 비교했을 때, View는 양쪽에 다 있지만, 기능이 서로 다르다.
MVC와 비교했을 때,
MVC의 Model은 MTV의 Model과,
MVC의 View는 MTV의 Templete과,
MVC의 Controller는 MTV의 View과 연결된다고 생각하면 쉽다. 즉, MVC / MTV 각각 같은 자리에 있는 것들이 같은 역할을 하고 있는 것이다. (단어의 뜻과는 상관없이)
이런 MTV 패턴은 장고 전체에 사용되지만 특히 앱 안에서는 철저하게 분리해서 사용해야한다.
앱을 만들면서, 분리해서 사용한다는 점을 항상 염두에 두어야겠다.
'프로젝트 > 파이썬 장고를 이용한 웹페이지 만들기' 카테고리의 다른 글
6. 튜토리얼 따라하기 - 설문조사(1) (0) | 2020.02.02 |
---|---|
5. 관리자 계정 생성하기 (0) | 2020.01.30 |
4. django에 MTV 적용하기 (0) | 2020.01.30 |
2. 장고 시작하기 (0) | 2019.12.05 |
1. 웹 프로그래밍이란? (0) | 2019.12.04 |