개발패턴의 종류 [ MVC패턴 / MVVM패턴 / Singleton 패턴 ]

Cherry·2022년 11월 11일
1
post-thumbnail

💡 개발패턴의 종류와 의미, 사용해야하는 이유에 대해서 알아보자

MVC패턴과 MVVM패턴은 똑같은 소프트웨어 디자인 패턴이지만, 자세히 분류하면 다른 패턴의 종류라고 볼 수 있는데 먼저 소프트웨어 패턴에 대해서 확인해보자 :)


💡 소프트웨어 디자인 패턴

🔸 4인방패턴

  • 생성패턴 👉 Singleton 패턴
  • 구조
  • 행동패턴
  • 동시실행패턴

🔸 동시성패턴

🔸 아키텍쳐 패턴👉 MVC패턴, MVVM패턴

🔸 기타패턴

싱글턴패턴은 생성패턴으로 분류되며, MVC패턴, MVVM패턴은 아키텍쳐 패턴에 분류된다.


💡 Singleton 패턴

전역변수를 사용하지 않고 객체를 하나만 생성하도록하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴이다.


💡 MVC패턴

Model - View - Controller 세가지로 나눈 소프트웨어 개발 방법이다.

🔸 Model

: 데이터베이스 테이블에 해당한다. 순수한 데이터로서 DB의 역할을 하거나 DB에 데이터를 요청해서 원하는 데이터를 받는역할을 한다. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야하고, View나 Controller에 대한 정보는 알 수 없다.

🔸 View

: Controller로 데이터를 받아서 html로 표현한다. 데이터를 따로보관하지않고 처리한다. 즉 화면에 나타내는 역할을 한다.

🔸 Controller

: 사용자가 접근한 URl에 따라서 사용자의 요청사항을 파악한 우에 그 요청에 맞는 데이터를 Model에 의뢰하고, Model에서 받은 데이터를 View에 반영하여 사용자게에 알려주는 역할을 한다.

🧶 MVVM패턴이 동작하는 순서

  1. 사용자가 Controller를 한다.
  2. Controller는 Model에서 해당 Data를 호출하고, Model은 Data를 가공하여 보낸다.
  3. Controller는 Model이 보낸 결과를 View를 통해서 화면에 나타낸다.

🧐 왜 MVC패턴을 사용하는걸까 ?

서로 분리해서 각자의 역할에만 집중하여 개발 할 수 있게한다.
유지보수하기에도 용이하고 어플리케이션의 확장성과 유연성이 증가하며 중복된 코딩의 발생여부 또한 쉽게 해결 할 수 있다.

🚨 MVC 패턴의 한계는 ?

분리되어있기에 클래스가 더 많이 필요하여 복잡해질 수 있다는 단점이있다. 그래서 설계시간이 오래걸릴 수 있다. 또한 Model과 View과 완전히 분리될 수는 없기에 패턴이 모호해지며 변형이 올 수도 있다.
이러한 한계를 보완하기 위해 나온것이 MVVM패턴이다. 함께 알아보자

✔ MVC 패턴의 예시

Google의 Angular JS , PHP의 CODEIGNITER, Python의 django, Facebook의 React등을 예로 들 수 있다


💡 MVVM패턴

MVVM패턴은 Model - View - View Model로 이루어져있다.

🔸 View Model

: View를 표헌하기 위해서 만든 Model이자, View를 나타내기 위한 데이터를 처리하는 부분이다.

🧶 MVVM패턴이 동작하는 순서

  1. 사용자의 Action들은 View를 통해서 들어오게 된다.
  2. View에 들어온 Action은 Command 패턴으로 View Model에 Action을 전달한다.
  3. View Model은 Model에게 데이터를 요청한다.
  4. Model은 View Model에게 요청받은 데이터를 보내준다.
  5. View Model은 응답받은 데이터를 가공하여 저장한다.
  6. View는 View Model과 Data Binding을 하여 화면에 나타낸다

🔨 MVVM패턴의 특징

Commend 패턴Data Binding 패턴 두가지 패턴을 사용하여 구현되었으며,
Commend 패턴Data Binding 패턴 을 이용하여 View와 View Model사이의 의존성을 없앴다. View Model과 View는 1:n 관계라는 것 또한 MVVM패턴의 특징이 될 수 있다.

🧐 MVVM패턴의 장점은 무엇일까?

위에서 말했던 특징처럼 View와 View Model사이의 의존성이 없다. 각각의 부분이 독립적이기에 모듈화하여 개발이 가능하다.

🚨 MVVM패턴의 단점은 ?

View Model의 설계자체가 쉽지않다.


📚

profile
🍒의 공부공간

0개의 댓글