SlideShare a Scribd company logo
나의 아키텍처 패턴
일대기
지금 사용하고 있는 아키텍쳐 패턴이 있나요?
!
지금 사용하고 있는 아키텍쳐 패턴이 있나요?
!
어떤점이 좋아서 사용하고 계신가요?
"
그동안 사용한 아키텍처들을 정리해보려고 합니다.

(아주 소소..)
MVC MVVM ReactorKit
아주 간단한 화면을 아키텍처별로 구현해봅시다!
adios 2021 oct 유현식 발표자료
adios 2021 oct 유현식 발표자료
adios 2021 oct 유현식 발표자료
adios 2021 oct 유현식 발표자료
장점#
• 뷰컨에서 모든 로직을 처리한다!

• 간단한 화면에서는 로직을 이해하기 쉽다.
단점$
• 뷰컨에서 모든 로직을 처리한다!

=> 뷰컨의 역할이 너무 커져요

• 복잡한 화면이라면?

=> 뷰컨이 무쟈게 커져요!

• 모든 로직이 뷰컨에 의존!
테스트 코드는 어떻게?
또 다른 단점$
내가 배운 테스트 코드… 뷰컨에 어떻게 적용해..?
%
이 함수는 입력, 출력이 명확하니 가능해보이지만
이런 함수는 어떻게해야할까요?
MVVM으로 가보자!
불편..
MVVM
Wiki: MVVM은 GUI 코드로 구현하는-그래픽 사용자 인터페이스(뷰)의 개발을 비즈니스 로직 또는 백
-엔드 로직(모델)로부터 분리시켜서 뷰가 어느 특정한 모델 플랫폼에 종속되지 않도록 해준다.
MVVM
Wiki: MVVM은 GUI 코드로 구현하는-그래픽 사용자 인터페이스(뷰)의 개발을 비즈니스 로직 또는 백
-엔드 로직(모델)로부터 분리시켜서 뷰가 어느 특정한 모델 플랫폼에 종속되지 않도록 해준다.
MVC에서 불편했던 모든 로직이 뷰컨에 의존한다는 것을 해결해줄 수 있다!
똑같이 만들어봅시다.

feat. Rx
입력과 출력을 추상화해서 정의했어요!
입력과 출력을 추상화해서 정의했어요!
화면에서 받는 입력
• 카운트를 올리는 버튼 터치 이벤트
화면에 보여줘야하는 출력
• 카운트를 올리는 버튼 터치 이벤트

• 최대 제한 보다 많이 터치했을 때, Alert 출력
입력에 따른 비즈니스 로직을 정의합니다!
입력에 따른 비즈니스 로직을 정의합니다!



ex.) 버튼을 누를때마다 현재까지의 터치 횟수 출력

ex.) 최대 버튼 횟수보다 많이 눌렀을 경우, 경고 Alert 출력
입력에 따른 로직을 정의합니다!



ex.) 버튼을 누를때마다 현재까지의 터치 횟수 출력

ex.) 최대 버튼 횟수보다 많이 눌렀을 경우, 경고 Alert 출력
로직만 별도로 분리해서 구현 끗!✌
다음! 뷰컨과는 어떻게 연결하죠!?
adios 2021 oct 유현식 발표자료
입력을 뷰모델의 Input에 바인딩합니다!

• 버튼 탭 이벤트를 ViewModel의 Input으로 바인딩
ViewModel.swift
뷰모델의 Output을 뷰에 바인딩합니다!

• touchCount를 titleLabel에 바인딩!

• showErrorAlert은 에러 알럿 출력하는 로직으로 연결
ViewModel.swift
로직을 분리시켜서 뷰모델 생성 완료!
로직을 분리시켜서 뷰모델 생성 완료!

MVC랑 비교하면 뭐가 좋나…?
로직이 분리되니 로직만 테스트를 할 수 있다!!
#
로직을 어떻게 테스트 하지?
원하는 액션을 테스트할 수 있어요!!
ex.) 버튼을 한번 눌렀을 경우 => Label에 1이 보여지는가?, 최대 터치 경고가 안보이는가?
' 버튼을 한번 눌렀을 경우 => ViewModel.input.tapButton에 이벤트 하나 전송!
' Label에 1이 보여지는가? => ViewModel.output.touchCount로 1을 전달 받았는가?

' 최대 터치 경고가 안보이는가? => ViewModel.output.showErrorAlert으로 이벤트가 안왔는가?
ViewModel.swift
로직을 어떻게 테스트 하지? 2222222
원하는 액션을 테스트할 수 있어요!!
ex.) 버튼을 네번 눌렀을 경우 => Label에 3이 보여지는가?, 최대 터치 경고가 보이는가?
' 버튼을 네번 눌렀을 경우 => ViewModel.input.tapButton에 이벤트 4개 전송!
' Label에 3이 보여지는가? => ViewModel.output.touchCount로 1, 2, 3을 전달 받았는가?

' 최대 터치 경고가 보이는가? => ViewModel.output.showErrorAlert으로 이벤트가 왔는가?
ViewModel.swift
아직도 더 익혀봐야할 아키텍처 패턴들은 많다….
아직도 더 익혀봐야할 아키텍처 패턴들은 많다….

패턴마다 장/단점을 잘 파악하여 사용하는 것이 중요하다고 생각합니다!

More Related Content

PDF
Android와 Flutter 앱 개발의 큰 차이점 5가지
Bansook Nam
 
PDF
TDD로 Widget 개발하기
Bansook Nam
 
PDF
Flutter로 글로벌앱 출시를 위한 꿀팁 - Droidknights2020
Bansook Nam
 
PPTX
코히런트 Gt(coherent gt) 통합 및 간단한 사용법
Kiyoung Moon
 
PPTX
스케일폼(Scaleform) ue4에 통합 및 간단한 사용법
Kiyoung Moon
 
PDF
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Bansook Nam
 
PPTX
hello mvp for android
Wonjun Hwang
 
PPTX
Model View ViewModel이란 무엇이고 UE에서는 어떻게 적용하는가?
yoon20002000
 
Android와 Flutter 앱 개발의 큰 차이점 5가지
Bansook Nam
 
TDD로 Widget 개발하기
Bansook Nam
 
Flutter로 글로벌앱 출시를 위한 꿀팁 - Droidknights2020
Bansook Nam
 
코히런트 Gt(coherent gt) 통합 및 간단한 사용법
Kiyoung Moon
 
스케일폼(Scaleform) ue4에 통합 및 간단한 사용법
Kiyoung Moon
 
Create App Easier With SVC Pattern - DroidKnights 2019 @Seoul
Bansook Nam
 
hello mvp for android
Wonjun Hwang
 
Model View ViewModel이란 무엇이고 UE에서는 어떻게 적용하는가?
yoon20002000
 

Similar to adios 2021 oct 유현식 발표자료 (20)

PDF
테크데이 발표자료.pptx.pdf
Jihoon Kim
 
PDF
[112] 실전 스위프트 프로그래밍
NAVER D2
 
PDF
iOS Architecture.pdf
ssuser86e2971
 
PPTX
자바 인터페이스 Java interface
Jinhyun Sim
 
PDF
[1B1]스위프트프로그래밍언어
NAVER D2
 
PPTX
04 생활 속 문제 해결을 위한 엔트리 프로그래밍
entrylabs
 
PPTX
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
진상 문
 
PPTX
2016년 #implude 안드로이드 단기속성 - 3. 데이터를 담아주는 변수 & 자료형 (+스낵바)
Sung Woo Park
 
PPTX
Design pattern study 6 command pattern
dragor0123
 
PDF
당신의 디버깅에 니코니코니
Lusain Kim
 
PDF
스크래치로 시작하는 코딩
Chiwon Song
 
PDF
사랑의 '유효성 검사' 재개발
Seongsil Yoo
 
PDF
모바일 앱 프로그래밍 2015-2019년 기말시험
Lee Sang-Ho
 
PPTX
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들
대원 김
 
PDF
안드로이드 멀티스레딩 입문 송형주
iamhjoo (송형주)
 
PPT
Working Effectively With Legacy Code - xp2005
Ryan Park
 
PDF
자바병렬프로그래밍 9.gui 애플리케이션
Choonghyun Yang
 
PDF
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
SangIn Choung
 
PDF
초보개발자의 TDD 체험기
Sehun Kim
 
PPTX
Design pattern 옵저버
Sukjin Yun
 
테크데이 발표자료.pptx.pdf
Jihoon Kim
 
[112] 실전 스위프트 프로그래밍
NAVER D2
 
iOS Architecture.pdf
ssuser86e2971
 
자바 인터페이스 Java interface
Jinhyun Sim
 
[1B1]스위프트프로그래밍언어
NAVER D2
 
04 생활 속 문제 해결을 위한 엔트리 프로그래밍
entrylabs
 
Project Anarchy(Vision Engine)으로 게임 툴 만들기! part2
진상 문
 
2016년 #implude 안드로이드 단기속성 - 3. 데이터를 담아주는 변수 & 자료형 (+스낵바)
Sung Woo Park
 
Design pattern study 6 command pattern
dragor0123
 
당신의 디버깅에 니코니코니
Lusain Kim
 
스크래치로 시작하는 코딩
Chiwon Song
 
사랑의 '유효성 검사' 재개발
Seongsil Yoo
 
모바일 앱 프로그래밍 2015-2019년 기말시험
Lee Sang-Ho
 
NDC17. "솔리테어: 덱다웃" 유니티 모바일 테스팅 기법들
대원 김
 
안드로이드 멀티스레딩 입문 송형주
iamhjoo (송형주)
 
Working Effectively With Legacy Code - xp2005
Ryan Park
 
자바병렬프로그래밍 9.gui 애플리케이션
Choonghyun Yang
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
SangIn Choung
 
초보개발자의 TDD 체험기
Sehun Kim
 
Design pattern 옵저버
Sukjin Yun
 
Ad

adios 2021 oct 유현식 발표자료