ํฐ์คํ ๋ฆฌ ๋ทฐ
[Clean Architecture] ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ(OOP)
Neoguri๐ฆ 2023. 11. 8. 23:14์๋ ํ์ธ์?
๋๊ตฌ๋ฆฌ์ ๋๋ค.
์ค๋์ ํด๋ฆฐ์ํคํ ์ฒ์์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๊ณต๋ถํด๋ณด๊ฒ ์ต๋๋ค.
# ๊ฐ์ฒด ์งํฅ์ ์ด๋ป๊ฒ ์ค๋ช ํด์ผ ํ ๊น?
๊ฐ์ฒด ์งํฅ์ ์ ๋๋ก ์ค๋ช ํ๊ธฐ ์ํด์๋
์บก์ํ, ์์, ๋คํ์ฑ ๊ฐ๋ ์ด ํ์ํ๋ค.
# ์บก์ํ
์บก์ํ๋ ๋ฐ์ดํฐ์ ํจ์๊ฐ ์์ง๋ ฅ์๊ฒ ๊ตฌ์ฑ๋ ์ง๋จ์ ์๋ก ๊ตฌ๋ถํ ์ ์๊ฒ ํ๋ ๊ฐ๋ ์ด๋ค.
์ด๋ ๊ฒ ์ง๋จ์ด ๊ตฌ๋ถ๋๋ฉด ์ง๋จ ๋ด๋ถ์ ๋ฐ์ดํฐ๋ ๋ฐ๊นฅ์ผ๋ก ๋ถํฐ ์๋๋๊ณ ์ผ๋ถ ํจ์๋ง ๋ ธ์ถ๋๊ฒ ํ ์ ์๋ค.
๋ฐ๊นฅ์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ํจ์ ๊ตฌํ์ ์์ ํ ๋ชจ๋ฅผ ๋ ์์ ํ ์บก์ํ๋ค.
swift์์๋ ์ฐ๋ฆฌ๊ฐ ์ ์๋ ์ ๊ทผ ์ ์ด์(private, public ๋ฑ)๋ก ๊ตฌํ ๊ฐ๋ฅํ๋ฐ
๋ฐ์ดํฐ๋ค์ private๋ก ์ ์ธํ์ฌ ์ง๋จ ๋ด๋ถ์์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๊ฒ ํ๊ณ
์ธ๋ถ์์ ๊ฐ์ ์ํ ๋๋ public์ผ๋ก ์ ์ธ๋ ํจ์๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋๋ก ๊ตฌํํ ์ ์๋ค.
# ์์
์์์ ๋จ์ํ ์ด๋ค ๋ณ์์ ํจ์๋ฅผ ํ๋์ ์ ํจ๋ฒ์์ ๋ฌถ์ด์ ์ฌ์ ์ ํ๋ ๊ฒ์ด๋ค.
๊ฐ์ฒด ์งํฅ ์ธ์ด๊ฐ ๋์ค๊ธฐ ์ ์์ ๊ตฌํํ ์ ์์์ง๋ง ๊ฐ์ฒด์งํฅ ์ธ์ด๊ฐ ๋์ค๋ฉด์
์ด์ ๋ณด๋ค ๊ฐํธํ ๊ตฌํํ ์ ์๋ค.
# ๋คํ์ฑ
๋คํ์ฑ์ด๋ ๊ฐ์ฒด์ ์์ฑ์ด๋ ๊ธฐ๋ฅ์ด ์ํฉ์ ๋ฐ๋ผ ์ฌ๋ฌ๊ฐ์ง ์ํ๋ฅผ ๊ฐ์ง ์ ์๋ค๋ ์๋ฏธ์ด๋ค.
ํด๋์ค์์ ๋ฉ์๋๋ฅผ overriding์ด๋ overloading์ด ์๊ณ (์์ ๊ด๋ จ ํค์๋ ์๋)
protocol๋ ๋คํ์ฑ ๊ตฌํ์ ์ข ๋ฅ์ด๋ค.
# ๋คํ์ฑ์์ ์์กด์ฑ ์ญ์
๋คํ์ฑ์์ ์ค์ํ๊ฒ์ ์์กด์ฑ ์ญ์ ์ด๋ค.
์์กด์ฑ ์ญ์ ์ด๋ ๊ตฌ์ฒด์ ์ธ ๊ฒ์ ์์กดํ๋๊ฒ์ด ์๋๋ผ ์ถ์์ ์์กดํด์ผ ํ๋ค๋๊ฒ์ด๋ค.
์์กด์ฑ ์ญ์ ์ ์ฌ์ฉํ๋ฉด ๋ฐฐํฌ ๋ ๋ฆฝ์ฑ๊ณผ ๊ฐ๋ฐ ๋ ๋ฆฝ์ฑ์ ํ๋ณดํ ์ ์๋๋ฐ
์ด๋ป๊ฒ ํ๋ณดํ ์ ์ด๋์ง ์ดํด๋ณด์.
์์๋ฅผ ๋ณด์
์ฑ์ ๋ง๋ค ๋ ์์กด์ฑ ์ญ์ ์ด ์์ ๊ฒฝ์ฐ ๋น์ง๋์ค ๋ก์ง์์ UI์ DataBase์
์์กดํ๊ณ ์๋ ํํ์ด๋ค.
๊ทธ๋ ๊ฒ ๋๋ฉด UI๋ DataBase์ ์ ๋ณด๊ฐ ๋ฐ๋๋ฉด ๋น์ฆ๋์ค ๋ก์ง์ ์ํฅ์ ์ฃผ๊ฒ ๋์ด
์์กด์ฑ์ด ๊ฐํด์ง๋๊ฒ์ ๋ณผ ์ ์๋ค.
์์กด์ ฉ ์ญ์ ์ ํ ๊ฒฝ์ฐ ๋น์ฆ๋์ค ๋ก์ง์์ UI๋ DataBase๋ฅผ ์์กดํ์ง ์์ผ๋ฏ๋ก
๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌํ๊ณ , ๊ฐ๋ฐํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ์๋ฏธ๋ ์๊ฒ ๋๋ฐ ๋คํ์ฑ์ผ๋ก ์ด๋ป๊ฒ ํ๊ฒ ๋ค๋ ๊ฒ์ธ๊ฐ ๊ถ๊ธ์ฆ์ด ์๊ธด๋ค.
์์์ ์์กด์ฑ ์ญ์ ์ ๊ตฌ์ฒด์ ์ธ๊ฒ์ด ์๋๋ผ ์ถ์์ ์ธ๊ฒ์ ์์กดํด์ผํ๋ค๊ณ ํ๋ค.
๋ฐ๋ก ์ถ์ํ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด๋ค.
์ฐ๋ฆฌ๊ฐ ๊ตฌํํ ํจ์๋ ํ๋กํผํฐ๋ฅผ protocol๋ก ์ถ์ํํ๊ณ
์ด๊ฒ์ ์์กดํ๊ฒ ํ์ฌ ํธ์ถํ๊ฒ ๋๋ฉด ํด๋น protocol์ ์ฑํํ๊ณ ์๋ ๋ค๋ฅธ ๊ณ์ธต์ protocol์ ์ค์ํ๊ณ ์๋ ํจ์๋
ํ๋กํผํฐ๊ฐ ํธ์ถ๋๋ค. ์ด๋ฐ ๊ณผ์ ์ด ๋คํ์ฑ์ ์ด์ฉํ์ฌ ์์กด์ฑ ์ญ์ ์ธ ๊ฒ์ด๋ค.
# ๊ฒฐ๋ก
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ๋คํ์ฑ์ ์ด์ฉํ์ฌ ๋ชจ๋ ์์ค ์ฝ๋์ ์์กด์ฑ์ ๋ํ ์ ์ด ๊ถํ์ ์ป๋๊ฒ์ด๋ค.
์ด๊ฒ์ ํตํด ๊ฐ ๋ชจ๋์ ๋ํด ๋ ๋ฆฝ์ฑ์ ๋ณด์ฅํ ์ ์๋ค.
- Total
- Today
- Yesterday
- Swift Network
- swift ๊ณต๋ถ
- Unit Test
- ๊ณต๋ถ
- autolayout
- URLSession
- set
- ์คํ ๋ ์ด์์
- test
- network
- swift
- ํ๋กํ ์ฝ
- ์ค์ํํธ ํ๋กํ ์ฝ
- swift ํ๋กํ ์ฝ
- ์ค์ํํธ ๊ณต๋ถ
- ์ค์ํํธ
- RxSwift
- RX
- Subscribe
- ํ๋กํผํฐ
- func
- swift urlsession
- XCTest
- Protocol
- ํ ์คํธ
- observable
- Clean
- ์ค์ํํธ map
- ios
- Property
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |