Design Pattern

seong_0629·2023년 6월 29일
0
post-thumbnail
  • Design Pattern
  • GoF 객체지향적 디자인패턴 카테고리
  • MVC VS MTV
    Spring Framework을 사용하다보면서 MVC을 알게되었습니다.
    그런이유에서 Design Pattern에 대해 찾아보며 정리해보았습니다.

Design Pattern?

✅ 기존환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어 나갈지에 대한 구조

GoF 객체 지향적 디자인 패턴 카테고리

GoF(Gang of Four)디자인 패턴은 소프트웨어 공학에서 가장 많이 사용되는 디자인 패턴이며,목적에 따라 분류할 시 생성 패턴 5개, 구조 패턴 7개, 행위 패턴 11개로 구성된다.
1) 생성(Creational) 패턴
→ Singleton / Abstract Factory / Factory Method / Builder / Prototype
2) 구조(Structural) 패턴
→ Adapter / Composite / Decorator / Facade / Flyweight / Proxy
3) 구조(Structural) 패턴
→ Command / Interpreter / Iterator / Mediator /
Memento / Observer / State / Strategy / Template Method

ScopeCreational PatternStructural PatternBehavioral Pattern
ClassFactory MethodAdapterInterpreter / Template Method
ObjectSingletonCompositeCommand
Abstract FactoryDecoratorIterator
BuilderFacadeMediator
PrototypeFlyweightMemento
ProxyObserver
State
Strategy

MVC VS MTV

✅ MVC는 Spring Framework, MTV는 Django Framework에서 사용되는 Design Pattern

MVC

: Model, View, Controller로 구분된 패턴, 이때 각각의 구성요소가 다른 요소들에게 영향을 미치지 않아야 한다.

MVC는 구성 요소 간 간섭 없이 각자의 역할에만 충실해야 한다는 패턴

  • Model : 데이터를 가지고 있으며, 데이터를 처리하는 로직을 포함
  • View : 화면에 요청에 대한 결과물을 보여주는 역할 (유저와 어플리케이션 간의 인터페이스)
  • Controller : 모델과 뷰를 이어주는 역할
    → 요청에 따라 모델에게 적절한 로직을 가동하도록 알려주고 모델이 응답시, 응답을 뷰에 전달
    MVC Pattern
  • MVC 장점 및 한계
    👍 각각의 구성 요소가 분리되어 본연의 역할에 충실한 구조
    → 유연성이 높고, 유지 보수 용이, 작업 영역의 분리가 장점
    👎 프로젝트 규모에 따라 컨트롤러 비대화 및 Model과 View의 의존성을 완벽히 분리할 수 없음
    → 점점 유지 보수가 어려워진다는 단점

MTV

Model, Template, View로 구성된 패턴
→ MTV Pattern은 전반적으로 MVC Pattenr에 대응되는 성격이 있는듯

  • Model : MVC 패턴의 모델에 대응되며 DB에 저장되는 데이터를 의미,
    모델은 클래스로 정의되며 하나의 클래스가 하나의 DB Table
    → Django는 ORM(Object Relational Mapping)기능을 지원하기에 Python으로 DB조작 가능
  • Template : MVC패턴의 View에 대응되며 유저에게 보여지는 화면을 의미
    → Django는 View에서 로직처리후 Html 파일을 Context와 함께 렌더링하는데 이때 Html파일을 템플릿이라고 칭하고, Django는 자체적인 Django Template 문법을 지원하며 이 문법으로 Html파일 내에서 Context로 받은 데이터를 활용가능.
  • View : MVC패턴의 컨트롤러에 대응되며, 요청에 따라 적절한 로직을 수행하여, 해당 결과를 템플릿으로 렌더링하며 응답
    → 다만 항상 렌더링 하는 것은 아니고, 백엔드에서 데이터만 주고 받는 경우도 존재
  • URLConf(URL설계)
    Django는 추가로 URLConf라는 단계가 하나 더 존재한다.
    → URL패턴을 정의하여 해당 URL과 View를 매핑하는 단계를 의미
##URLConf Example
from django.urls import path
from . import views

app_name = 'project'

urlpatterns = [
 path('', views.HomeView.as_view(), name='home'),
 path('login/', views.LoginView.as_view(), name='login'),
]

참조

https://tibetsandfox.tistory.com/16
https://developer.mozilla.org/ko/docs/Glossary/MVC
https://tecoble.techcourse.co.kr/post/2021-04-26-mvc/
https://beomy.tistory.com/43
https://velog.io/@hidaehyunlee/Django-MTV-%ED%8C%A8%ED%84%B4

0개의 댓글

관련 채용 정보