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
'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 |
댓글