Skip to content

Latest commit

 

History

History
85 lines (67 loc) · 4.84 KB

README.md

File metadata and controls

85 lines (67 loc) · 4.84 KB

swift mvvm sample

License Swift 4

Use Swift to study, note, and sample MVVM pattern.

MVVM의 과거

Microsoft architects인 Ken Cooper와 Ted Peters가 고안했었다고 합니다. 이후 Windows Presentation Foundation (WPF) (Microsoft의 .NET 그래픽 시스템)과 Silverlight (WPF의 인터넷 응용 프로그램 확장)에 통합되었고, John Gossman의 블로그에 의해 2005년 에서 MVVM을 발표되었다고 합니다.

이후 다양하게 파생?되어진 것 같습니다.

MVVM 란?

MVVM(Model-view-viewmodel) 패턴은 소프트웨어 아키텍처 패턴입니다.

비슷한 용어 (model-view-binder), 인터페이스의 이벤트 중심 프로그래밍을 단순화하기 위한 목적을 가지고 있습니다.

Model-View-ViewModel 패턴의 약자입니다.

M (Model)
- 실제 상태 데이터 모델, 접근 할 데이터

V (View)
- 모양, 레이아웃
- 추상화
- 재사용성과 테스트 용이성

VM (ViewModel)
- 개체를 쉽게 관리하기 위함
- 데이터 개체를 변환하는 역활
- 화면 표현의 대부분을 처리

그리고 Binder 개념이 내포되어있어서, 데이터와 커멘드바인딩(command-binding, Declarative data)가 
뷰 모델과 뷰을 데이터가 동기화할 의무를 없도록 만듭니다. 
이벤트 실행과, 속성이 연결되어있어서 속성값 변경시 뷰에 반영되도록 합니다.


※ 개체 : 전체나 집단에 상대하여 하나하나의 낱개를 이르는 말.

MVVM 상세

흐름도

계층으로 보면

프로젝트 안에서의 모습을 상상하면..

생각

1. MVVM 패턴의 소스를 처음 접하신다면, ViewModel 부터 분석해 나가시면 보다 수월하지 않을 까 싶습니다.
2. View는 디자이너 영역이라는 표현의 글도 읽었습니다. 그만큼 화면 표현에만 집중합니다.
3. Unit Test 도입이 수월하다고 합니다. 느낌은 오는 데, 실제 해봐야 확실히 안다 할 수 있을 것 같네요. (이것은 언제 할지.. 일단 후순위)
   - 테스트 주도 개발(Test-driven development) 도입도 쉽다.
4. 개발속도에 대해 생각하면, 그냥 패턴없이 개발하면 보다 결과물이 빨리 나오죠.. 그러나 개발 속도 향상이 아닌 유지보수의 비용 감소에 그 목적이 있다는 의견을 읽었습니다.
5. 뷰의 추상화를 만드는 것이 핵심이라고 합니다. 뷰의 추상화는 재사용할 수 있고(reusable) 테스트하기 쉽다(testable)의 글을 읽었습니다.
6. 이벤트를 발생시킬때 ViewModel이 명령을 가집니다. 모델의 행위를 실행할 수 있습니다.
7. Controller 는 바인딩 하는데 핵심역활을 하는 것 같습니다. 데이터 바인딩에 의존하는 데 그역활을 적절하게 수행하는 역활을 할 것 같습니다.


셈플 소스 구성

첫번째 셈플을 만들고 끝나면 두번째 셈플을 만들어 나가면서 여러형태의 셈플을 늘려나가며 MVVM 에 대해 셈플을 만들어보며 이해하려고 합니다.

구조 실행 전 (첫번째 셈플)
스토리보드
실행 후 (첫번째 셈플)

링크

etc

아직........셈플링 해보는 중.. 2번째 셈플 테스팅중, 정리중, 고민중, 생각중