Chocolate Chip Cookie
본문 바로가기
IT 지식

MVC패턴과 디자인 패턴

by Khookie 2024. 3. 29.

1. 디자인 패턴이란?

 소프트웨어 공학에서 자주 사용하는 설계 형태를 정형화해서 
이를 유형별로 설계 템플릿을 만들어둔 것을 말한다. 

 프로그램 개발에서 자주 나타나는 과제를 해결하기 위해 구상 된 방법중 하나로, 
과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것.

 알고리즘처럼 프로그램 코드로 변환하여 바로 사용할 수 있는 것은 아니지만 유사한 상황에서 구조적인 문제를 해결할 수 있는 방안을 제시해주는 템플릿이다.

이 용어를 소프트웨어 개발 영역에서 처음 제시한 곳은 GoF(Gang of Four)라 불리는 네명의 컴퓨터 과학 연구자들이 쓴 서적 'Design Patterns: Elements of Reusable Object-Oriented Software'(재이용 가능한 객체지향 소프트웨어의 요소 - 디자인 패턴)이다.
GoF는 컴퓨터 소프트웨어 공학 분야의 연구자인 에릭 감마, 리차드 헬름, 랄프 존슨, 존 블리시디스의 네명을 지칭한다.

 

 

2. 디자인 패턴을 사용하는 이유는?

- 효율성과 재사용성을 높임
- 소프트웨어 구조 파악 용이
- 재사용을 통한 개발 시간 단축
- 설계 변경 요청에 대한 유연한 대처
- 개발자(설계자) 간의 원활한 의사소통

단점으로는  객체지향 설계/구현 위주라 복잡한점과 초기 시간과 노력이 많이 든다는 점이 있다.


3. 디자인 패턴의 종류 

1) MVC (모델-뷰-컨트롤러  )
에플리케이션을 M,V,C 세가지의 역할로 구분한 개발 방법론
소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있으며, 다른 디자인 패턴의 기반이 되고 있다.

Model  - 데이터
View - 화면
Controler - 조작

 

1-1) 모델: 데이터와 비즈니스 로직을 관리합니다.
앱이 포함해야할 데이터가 무엇인지를 정의하고  데이터 변화를 뷰나 컨트롤러에게 알리기도 합니다.

1-2) 뷰: 레이아웃과 화면을 처리합니다.
모델로부터 데이터를  받고 사용자에게 항목이 보여지는 방식을 정의

1-3) 컨트롤러: 명령을 모델과 뷰 부분으로 라우팅합니다.
사용자 입력에 따른 응답으로 모델과 뷰를 업데이트하는 로직을 포함한다.

Web 에서의 MVC
-> 사용자가 웹사이트에 접속한다. (Uses)
-> Controller는 사용자가 요청한 웹페이지를 서비스 하기 위해서 모델을 호출한다. (Manipulates)
-> 모델은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후에 그 결과를 리턴한다.
-> Controller는 Model이 리턴한 결과를 View에 반영 한다. (Updates)
-> 데이터가 반영된 View는 사용자에게 보여진다. (Sees)

 

 

2) MVP (모델-뷰-프리젠터)
 UI(View)와 비즈니스 로직(Model)을 분리하고, 서로 간에 상호작용을 다른 객체(Presenter)
에 그 역할을 줌으로써 서로의 영향(의존성)을 최소화

Presenter - Model과 View사이의 매개체.
모델과 뷰를 매개체라는 점에서 Controller와 유사하지만, View에 직접 연결되는 대신 인터페이스를 통해 상호작용 한다는 점이 다름.

 

3) MVVM (모델-뷰-뷰모델)
앞선 두 패턴보다 가장 진보된 형태
 애플리케이션을 데이터를 처리하는 모델 
(Model), 사용자에게 보여지는 UI인 뷰(View), 뷰에 바인딩되어 모델과 뷰 사이를 이어주는 뷰 모델(View Model)로 분리

모델과 뷰 뿐만 아니라 뷰와 뷰 모델 간의 의존성까지 최소화한 형태로, UI가 실제 코드와 거의 완벽하게 분리된 것이 특징이다. 덕분에 데이터 처리 로직과 UI 디자인 간 상호 영향이 적어 개발이 용이하다.

4) MVI (모델-뷰-인텐트)
데이터베이스, 네트워크 통신등의 작업을 진행하기 위해 SideEffect를 포함함.

Intent -
사용자 또는 앱 내의 상태를 바꾸려는 의도.
모델은 인텐트를 통해서, 새로운 상태로 변화할 수 있다.
MVI의 단점 중 하나로, 가벼운 변경 사항도 이를 적용해야 함.

 

4. 좋은 패턴이란 무엇인가

이 주제에 대해 잘 다룬 블로그 글이 있어서 링크를 첨부한다
MVVM 패턴이란? | 작성자 와이제이 https://blog.naver.com/rockhammer/222734401665

참조
https://ko.wikipedia.org/wiki/%EB%94%94%EC%9E%90%EC%9D%B8_%ED%8C%A8%ED%84%B4
- [네이버 지식백과] 디자인 패턴의 이해 (쉽게 배우는 소프트웨어 공학, 2015. 11. 30., 김치수)

https://namu.wiki/w/MVVM
https://developer.mozilla.org/ko/docs/Glossary/MVC

- https://www.opentutorials.org/course/697/3828

https://velog.io/@evergreen_tree/Android-MVI-%ED%8C%A8%ED%84%B4

https://velog.io/@jojo_devstory/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%ED%8C%A8%ED%84%B4-MVP%EA%B0%80-%EB%AD%98%EA%B9%8C

 

 

'IT 지식' 카테고리의 다른 글

유튜브 Data API 사용법 정리중  (0) 2024.05.27
[it 용어] VNC 란  (0) 2021.08.15
Routing 라우팅 이란  (0) 2021.08.02
[ IT용어 ] MVC 란 | MVC 뜻  (0) 2021.07.27
SSH 란  (0) 2021.07.21

댓글