디자인 패턴을 공부하기 전에, 우선 소프트웨어 공학에 대해 알아야 합니다.
소프트웨어 공학이란 공학을 소프트웨어에 적용함으로써 '건강한 소프트웨어'를 만들기 위한 학문입니다.
디자인 패턴 또한 소프트웨어 공학에서 특정 문맥에 공통적으로 발생하는 문제에 대해 재사용이 가능하게 만들어놓은 해결책입니다.
정의하자면 '코드를 효율적으로 작성하기 위한 방법론' 이라 할 수 있습니다.
디자인 패턴은 사용하기 전에 학습하는 것도 쉽지 않지만 복잡한 구조를 보기 쉬운 구조로 바꾸어 개발할 수 있으므로 개발자들이 협업을 할 때 의사소통을 효율적으로 할 수 있습니다.
또한 디자인 패턴을 사용하면 이러한 장점들이 있습니다.
- 소스 코드 변경을 최소화할 수 있게 해 준다.
- 재사용을 통한 개발 시간을 단축시킨다.
- 시간과 비용이 절약된다.
- etc . . .
이번에는 안드로이드와 관계없이 프로그래밍 시 가장 널리 사용되는 구조 중 하나인 MVC 패턴에 대해 알아보겠습니다.
MVC가 뭐야?
MVC는 Model-View-Controller의 약자입니다.
1) Model
Model은 APP에서 사용되는 data를 처리합니다.
View 또는 Controller에게 의존하지 않아 재사용이 가능합니다.
2) View
View는 사용자에게 보여지는 UI를 나타냅니다.
Model로부터 data를 받아 사용자에게 보여주는 역할을 합니다.
3) Controller
Controller는 사용자의 입력(Action)을 받고 처리합니다.
Activity나 Fragment로 표현되며
Model의 data 변화에 따라 View를 선택합니다.
역시나 많이 어렵네요.. 그럼 이번에는 흐름을 통해 알아보도록 하겠습니다.
(1) User의 Action이 Controller에 들어온다.
(2) Controller는 Action을 확인하고 View에게 데이터 업데이트 여부를 확인한다.
(3) 데이터 업데이트가 필요한 경우 데이터를 요청하며 갱신하며 필요에 따라 UI도 갱신한다
(4) 데이터 업데이트가 필요하지 않은 경우 UI만 갱신하며 필요에 따라 데이터도 갱신한다.
와우!
이런 흐름이네요. 이해가 더 잘 되는 거 같습니다.
하지만 이런 MVC는 MVP MVVM의 모티브가 되는 가장 기초적인 디자인 패턴이라고 하는데요,
그러한 이유를 장점과 단점을 통해 알아볼게요.
MVC의 장점?
- Model과 View가 분리된다.
- Model의 비종속성으로 재사용이 가능하다.
- 구현하기 가장 쉽다.
- 개발자라면 누구나 쉽게 파악이 가능하다.
- 개발 기간이 짧아진다.
MVC의 단점?
- Model과 View 사이에 의존성이 발생한다.
- 따라서 View의 UI 갱신을 위해 Model을 참조하므로 앱 자체가 커지고
- Controller에 코드가 집중될수록(로직이 복잡해질수록) 성능이 저하되고 유지 보수하기 어려워진다.
하지만 그렇다고 MVC를 사용하지 않는 건 아닙니다.
자신이 개발하는 앱의 상황에 맞춰 그에 맞는 디자인 패턴을 적용하면 됩니다.
MVC는 그럼 예를 들자면 개인 프로젝트에 사용이 가능하겠죠.
위에서 이렇게 말한 이유는 MVC를 기반으로 더 나은 디자인 패턴이 생겨났기 때문입니다.
MVC를 모티브로 한 MVP와 MVVM이 MVC의 단점을 보완하기 위해 탄생했습니다.
그러므로 사람들은 MVP 또는 MVVM을 주로 많이 사용하기도 합니다.
이 글을 마치며
오늘은 MVC에 대해 알아보았는데요,
저는 다음 시간에 MVC를 보완한 다른 디자인 패턴 중 하나에 관해 설명드리겠습니다.
그럼 이만 가보겠습니다.
참고
'Android > Design Pattern' 카테고리의 다른 글
[Android/Design Pattern] MVVM 디자인 패턴에 대해 알아보자! (0) | 2022.08.23 |
---|---|
[Android/Design Pattern] MVP 디자인 패턴에 대해 알아보자! (0) | 2022.08.22 |