๐ก Default project UML
๐ก ์ถ์ํ๋ ์ปดํฌ๋ํธ๋ ์ ์ ํ ๋๋ฆฌ, ์ ์ ๊ธ์์์ผ๋ก ํ๊ธฐํ์์ต๋๋ค.
MVVM์ ์ฌ์ฉํ ๊ตฌ์กฐ๋ก, Model์์ ๋ฐ์ดํฐ์ ๊ด๋ จ๋ ๋๋ถ๋ถ์ ์์ ๋ค์ ํด์ฃผ๊ณ ์์ต๋๋ค.
๐ก Actor / UseCase
ํ์ฌ ํ๋ก์ ํธ์ Actor๋ก์จ, ๋ฐ์ดํฐ ์ ๊ณต์ ( ๋๋ฌผ ์ด๋ฏธ์ง ๋ฐ์ดํฐ / ๋ช ์ธ ๋ฐ์ดํฐ )์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ ์ ์ ๋ฅผ ๊ตฌ๋ถ ํ์์ต๋๋ค.
๐ก Layer divide
ํด๋ฆฐ ์ํคํ ์ฒ๋ฅผ ์ ์ฉํ๊ธฐ ์ํด, ํฌ๊ฒ ๋ ์ด์ด๋ฅผ ๋๋์ด ๋ณด์์ต๋๋ค.
Presentation Layer
์ค์ ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ์ปดํฌ๋ํธ๋ค์ ๋ชจ์๋์ ๋ ์ด์ด ์ ๋๋ค.
๋ทฐ์์ ๋ฐ์ํ ์ด๋ฒคํธ๋ฅผ Domain Layer์ ์ ๋ฌํ๊ณ , Domain Layer๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ญํ ์ ์งํํฉ๋๋ค.
Domain Layer
์ ์ฆ์ผ์ด์ค๋ฅผ ์ ์ ํด ๋์ ์ปดํฌ๋ํธ๋ค์ ๋ชจ์๋์ ๋ ์ด์ด ์ ๋๋ค.
Data Layer์ ์๋ Gateway๋ฅผ ํตํด Data Layer์ ์ํตํ๊ณ , Input / Output Interactor๋ฅผ ํตํด Presentation Layer์ ์ํตํฉ๋๋ค.
Presentation Layer๋ก ๋ถํฐ ๋ฐ์ํ ์ด๋ฒคํธ๋ฅผ Data Layer์ ์ ๋ฌํ๊ณ , Data Layer๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ Presentation Layer๋ก ์ ๋ฌํ๋ ์ญํ ์ ์งํํฉ๋๋ค.
Data Layer
์ํฐํฐ, ์ค์ ๋น์ฆ๋์ค ๋ก์ง๋ค์ ์ฒ๋ฆฌํ๋ ์ปดํฌ๋ํธ๋ฅผ ๋ชจ์๋์ ๋ ์ด์ด ์ ๋๋ค.
์ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋, ์ ์ฅํ๋ ์ญํ ์ ์งํํฉ๋๋ค.
Gateway๋ฅผ ํตํด Presentation Layer์ ์ํตํฉ๋๋ค.
๐ก Dependency Map
View
์ค์ ๋ก ์ ์ ๊ฐ ๋ทฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ถ๋ถ์ ๋๋ค.
๋ทฐ์์ ์ผ์ด๋ ์ด๋ฒคํธ๋ฅผ Request ํํ๋ก Controller์ ์ ๋ฌํ๋ ์ญํ ์ ์งํํฉ๋๋ค.
๋ทฐ๋ชจ๋ธ์ ๊ด์ฐฐํ๊ณ ์๋ค๊ฐ, ๋ทฐ๋ชจ๋ธ์ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ทฐ๋ฅผ ๋ณ๊ฒฝํด์ฃผ๋ ์ญํ ์ ์งํํฉ๋๋ค.
Request ( Data Model )
๋ทฐ์์ ์ผ์ด๋ ์ด๋ฒคํธ๋ฅผ Controller๋ก ์ ๋ฌ ํด ์ค๋ํ์ํ ๋ฐ์ดํฐ ํํ๋ฅผ ์์ ํด๋์ ๋จ์ํ ๋ฐ์ดํฐ ํด๋์ค ์ ๋๋ค.
View์์ ์ด ๋ฐ์ดํฐ ํด๋์ค๋ฅผ ์ฐธ์กฐํ๊ณ ์์ต๋๋ค.
Controller
๋ทฐ์์ ์ผ์ด๋ ์ด๋ฒคํธ๋ฅผ Domain Layer๋ก ์ ๋ฌํด์ฃผ๋ ์ญํ ์ ์งํํฉ๋๋ค.
ํ์์ Request ํํ๋ก ๋ฐ์ ์ด๋ฒคํธ๋ฅผ, Domain Layer์ ์๋ง๋ ํํ์ธ RequestModel์ ํํ๋ก ๋ณํํด์ฃผ๋ ์ญํ ๋ ์งํํฉ๋๋ค.
๊ฐ๋จํ if / else ๋ฌธ ์ ๋๋ ์์ด๋ ๋๋, ์ค์ํ ๋ก์ง์ entity, data layer์ชฝ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ์ฒ๋ฆฌํ๋ฉด ์๋ฉ๋๋ค.
Presenter
Domain Layer์์ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฉด์ ํํํ ์ ์๋ ํฌ๋งท์ธ ViewModel์ ๊ฐ์ผ๋ก ์ ํ ํด์ฃผ๋ ์ญํ ์ ์งํํฉ๋๋ค.
ํ์์ Domain Layer์์ ์ ๋ฌ๋ฐ์ ResponseModel ํํ์ ๋ฐ์ดํฐ๋ฅผ ViewModel ํํ๋ก ๋ณํํ๋ ์์ ๋ ์งํํฉ๋๋ค.
UseCase Output Port๋ฅผ ๊ตฌ์ฒดํํฉ๋๋ค.
ViewModel
Presenter๋ก ๋ถํฐ ์ ๋ฌ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์๋์ ํด๋์ค์ ๋๋ค.