์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- HAVIT
- APPJAM
- ์ฐ์ํ์ค๋ถ๋ถ์์ด์ํฉ
- algoritm
- discardableResult
- ๊ณ ๋์ kit
- Til
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- URLSession
- SwiftUI
- ๋์ ๊ณํ๋ฒ
- BFS
- Swift
- binarySearch
- GroupBy
- DynamicProgramming
- duno
- dfs
- 0์ด๋์ด์๋๊ธธ
- ๊ธฐ์ด๋ฌธ๋ฒ
- algorithm
- SOPT
- GCD
- SQL
- SwiftUI ํํ ๋ฆฌ์ผ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ด์งํ์
- SwiftUI Tutorials
- concurrency
- IOS
- Today
- Total
suvera-dev ๐ฅฆ
Design Pattern ) ๋์์ธ ํจํด ๊ฐ์ ๋ณธ๋ฌธ
์๋ ํ์ธ์ ! ์ค๋์ ๋์์ธํจํด์ ๋ํด์
๊ณต๋ถํ๋ ๋ด์ฉ์ ๊ธฐ๋กํ๊ณ ์ ํฉ๋๋ค :)
๋์๋ฆฌ์์ ๋์์ธ ํจํด ์คํฐ๋๋ฅผ ์์ํ๊ธฐ๋ ํ๊ณ ,
ํ์์ ์ฑ ์ฌ์ ๊ณต๋ถํ๋ ๊ฒ์ ์ข์ํด์
ํค๋ํผ์คํธ ๋์์ธํจํด ์ด๋ผ๋ ์ฑ ์ ๊ตฌ๋งคํ๊ฒ ๋์์ต๋๋ค.
์ด ์ฑ ์ ๋ฐํ์ผ๋ก ์ฌ๋ฌ ๋์์ธ ํจํด์ ์ ๋ฆฌํด๋ณด๊ณ ,
์ฑ ์ ๋์์๋ ์์ ์ฝ๋๋ฅผ Swift๋ก ์ง์ ๋ฐ๊ฟ๋ณด๋ ค๊ณ ํฉ๋๋ค !
์ค๋์ ๋์์ธ ํจํด์ด ๋ญ์ง, ๊ทธ๋ฆฌ๊ณ ์ ์ฌ์ฉํ๋์ง,
์ข ๋ฅ์๋ ์ด๋ค ๊ฒ๋ค์ด ์๋์ง ๊ฐ๋จํ๊ฒ ์ฐพ์๋ณธ ๋ด์ฉ๋ค์ ๊ธฐ๋กํ์์ต๋๋ค.
๋์์ธ ํจํด์ด๋ ?
๋์์ธ ํจํด์ ์ํํธ์จ์ด ์ค๊ณ์์ ๊ณตํต์ผ๋ก ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋ํด
์์ฃผ ์ฐ์ด๋ ์ค๊ณ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ ํจํด ! ์ ๋๋ค.
๋ฌธ์ ์ํฉ์ ๋ํ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํด๊ฒฐ๋ฐฉ๋ฒ์ผ๋ก์จ,
์ผ์ข ์ ์์ด๋์ด๋ผ๊ณ ์๊ฐํ ์ ์์ ๊ฑฐ ๊ฐ์ต๋๋ค !
์ฆ, ์ ํฌ๊ฐ ์ํํธ์จ์ด๋ฅผ ์ค๊ณํ๊ฑฐ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ฉด์
ํน์ ๋ถ๋ถ์์ ๊ณตํต์ ์ผ๋ก ๋ง์ด ๋ฐ์ํ๋ ๋ฌธ์ ๊ฐ ์๊ฒ ์ฃ ?
์ ์ด๋ฐ ์ ์ฌํ ์ํฉ๋ค์ ๋ฐ๋ผ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ง !
์ ๋ฆฌํด๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค :)
๊ฐ๋ฐ ๊ฒฝํ์ด ์์ด๋ค๋ณด๋ฉด ์ ๊ฐ ์ด์ ์ ์์ฑํ๋ ์ฝ๋์
์ ์ฌํ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ค๊ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํด์
๋ค์ ์์ ์ ์์ฑํ๋ ์ฝ๋๋ฅผ ๋ณด๊ฒ ๋ ๋๊ฐ ์์ฃ ..
์ด๋ฐ ๋ฌธ์ ์ํฉ์ด ๋ฐ์ํ ๋๋ง๋ค ๋งค๋ฒ ๋ค์ ํด๊ฒฐ์ฑ ์ ์ฐพ๋๋ค๋ฉด
์๊ฐ๊ณผ ๋น์ฉ์ด ๋ง์ด ๋ค์ด๊ฐ๊ฒ ์ฃ ..?
ํ์ง๋ง.
ํน์ ๋ฌธ์ ์ํฉ์ ๋ํ ํจํด์ ๋ฐ๊ฒฌํ๊ณ ํด๊ฒฐ๋ฐฉ์์ ๊ธฐ๋กํด๋๋ค๋ฉด
๋ค์ ๊ทธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ๋น ๋ฅด๊ฒ ์ ์ฉํ ์ ์๊ฒ ๋ค์ !
๐
๋์์ธ ํจํด์ ๊ฐ์ฒด ์งํฅ ์ค๊ณ 5๋ ์์น์ธ SOLID๊ฐ ๋ฐ์๋
์ฌ๋ฐ๋ฅธ ํ๋ก๊ทธ๋จ ์ค๊ณ๋ฅผ ๋น ๋ฅด๊ฒ ํ ์ ์๋๋ก ๋์์ค ๋ฟ๋ง ์๋๋ผ
์ฌ๋ฌ ํ์๊ฐ์ ํ์ ์์ ์์ฌ์ํต ์๋จ์ ์ผ์ข ์ผ๋ก ์ฌ์ฉ๋ ์ ์์ต๋๋ค
์ข์ ์ฝ๋๋, ๊ฐ๋ ์ฑ, ๊ฐ๊ฒฐํจ ๋ฑ ์ฌ๋ฌ ๋ฐฉ๋ฉด์ด ์๊ฒ ์ง๋ง,
๋์์ธ ํจํด์์๋ ์ค๊ณ์ ๊ด์ ์์์ ์ข์ ์ฝ๋๋ฅผ ๋งํ๋ค๊ณ ํฉ๋๋ค.
์ฆ, ํ์ฅ๊ณผ ์์ ์ ์ฉ์ดํ์ฌ ์ค๊ณ ์ดํ์๋ ์ถ๊ฐ์ ์ธ ์ ์ง ๋ณด์์ ๋น์ฉ์ด ์ ๊ฒ๋ค์ด๊ฐ๋ ์ฝ๋๋ฅผ ๋งํ๊ณ
์ด๋ฅผ ๊ฐ์ฒด์งํฅ์ ์ผ๋ก ์๊ฐํ๋ฉด, ์ถ๊ตฌํด์ผํ ์ค๊ณ ๋ฐฉํฅ์ ์๋์ ๊ฐ์ต๋๋ค
๊ฐ์ฒด ๊ฐ ์์ง๋๋ ๋์ด๊ณ , ๊ฒฐํฉ๋๋ ๋ฎ๊ฒ.
์๊ตฌ ์ฌํญ ๋ณ๊ฒฝ ์, ์ฝ๋ ๋ณ๊ฒฝ์ ์ต์ํ ํ๋ ๋ฐฉํฅ์ผ๋ก.
๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ '์ข์ ์ฝ๋' ์ค๊ณํ๋ ค๋ฉด ์ด๋ฌ์ด๋ฌํ ์์น๋ค์ด ์ง์ผ์ง๋ฉด ์ข๋ค๋ผ๊ณ ๋
ผ์๋์ด์๋๋ฐ
'๊ฐ์ฒด์งํฅ ๋ฐฉ๋ฒ๋ก ' ์์๋ ์ด๊ฒ SOLID ์์น์ด ๋๊ฒ ์ฃ !
๋ ์ด๋ฌํ ์์น์ ๊ธฐ๋ฐํ์ฌ, ์ข ๋ ๊ตฌ์ฒด์ ์ธ ์ฝ๋ ์ค๊ณ ํจํด ์ข
๋ฅ๊ฐ ๋ช ๊ฐ์ง๋ก ๋ค์ด๋ฐ๋๋๋ฐ
์ด๊ฒ ์์ผ๋ก ์ดํด๋ณผ ๋์์ธ ํจํด์ด๋ผ๋ ๊ฒ๋ค์ ๋๋ค ^__^
SOLID ์์น์ ๋ํด์ ๋ ํฌ์คํ ์ ํด์ผ๊ฒ ๋ค.. ์๋? ๋ชจ๋ฅด๋๊น.. ํํ
์ ๊ทธ๋์ ์คํฐ๋์์ ์ฒซ ์๊ฐ์ ์๊ฑธ.. ๋ค๋ฃจ๊ธฐ๋ก ํ ๊ฒ์ด๊ตฐ..
๋ ์ฐพ์๋ณด๋, ๋์์ธ ํจํด์
๊ฐ๋ฐ์๋ค์ด ํ์ ์ ํ ๋, ์์ฌ์ํต์ ํจ์จ์ ์ ํ ์ ์๋๋ก ๋์์ค๋ค๊ณ ํฉ๋๋ค.
์๋ก ๊ฐ์ ํจํด์ ์๊ณ ์๋ค๋ฉด, ํจํด์ ์ด๋ฆ๋ง์ผ๋ก๋
๊ทธ ์์ ๋ด๊ฒจ์๋ ๋ฌธ์ ์ํฉ์ด๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ํด ๋ ์ฝ๊ฒ ์์ฌ์ํต ํ ์ ์๊ฒ ์ฃ !
๐
์ ๋ฆฌํ์๋ฉด, ๋์์ธํจํด์ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ๋ค๊ณ ํ ์ ์์ต๋๋ค :)
1. ์ฐ๋ฆฌ ์ฃผ๋ณ์์ ์์ฃผ ๋ฐ๋ณตํด์ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๊ทธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํต์ฌ์ ๊ธฐ์ ํ์ฌ ๋์ผํ ์ผ์ ๋๋ฒ ๋ค์ ํ์ง ์๊ณ ํด๊ฒฐํ ์ ์๋๋ก ํ๋ค.
2. ๊ตฌ์ฒด์ ์ธ ์ค๋ช
์์ด ๊ตฌ์กฐํ๋ ํจํด์ ๋ํ ์ฌ์ ์ง์์ผ๋ก ๊ฐ๋ฐ์ ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์
์ด ์ํ ํด์ง์ ์๋ค.
3. ์ด๋ฏธ ๊ฒ์ฆ๋ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ค๊ณ ๊ณผ์ ์ ์๋๋ฅผ ๋์ผ ์ ์๋ค.
์ด์ ์ง์ง ๋ณธ๋ก ์ผ๋ก ๋ค์ด๊ฐ์...
๐ฅ ๋์์ธ ํจํด์ ์ข ๋ฅ์๋ ๋ญ๊ฐ ์๋์??
๋์์ธ ํจํด ๊ณ์ ๊ต๊ณผ์์ธ 'GoF ๋์์ธํจํด' ์์๋
๊ฐ์ฒด์งํฅ์ ์ธ ๋์์ธ ํจํด์ ์นดํ ๊ณ ๋ฆฌ๋ฅผ
์์ฑ, ๊ตฌ์กฐ, ํ๋ ์ด 3๊ฐ์ง๋ก ๊ตฌ๋ถํ๊ณ ์์ต๋๋ค !
์์ฑ ํจํด(Creational Patter)
๊ฐ์ฒด ์์ฑ์ ๊ด๋ จ๋ ํจํด์ผ๋ก ๊ฐ์ฒด์ ์์ฑ๊ณผ ์กฐํฉ์ ์บก์ํํด ํน์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ฑฐ๋
๋ณ๊ฒฝ๋์ด๋ ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ์ ์ํฅ์ ํฌ๊ฒ ๋ฐ์ง ์๋๋ก ์ ์ฐ์ฑ์ ์ ๊ณต
๊ตฌ์กฐ ํจํด(Structural Pattern)
ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์กฐํฉํด ๋ ํฐ ๊ตฌ์กฐ๋ฅผ ๋ง๋๋ ํจํด
ํ๋ ํจํด(Behavioral Pattern)
๊ฐ์ฒด๋ ํด๋์ค ์ฌ์ด์ ์๊ณ ๋ฆฌ์ฆ์ด๋ ์ฑ
์ ๋ถ๋ฐฐ์ ๊ด๋ จ๋ ํจํด์ผ๋ก ํ ๊ฐ์ฒด๊ฐ ํผ์ ์ํํ ์ ์๋
์์ ์ ์ฌ๋ฌ๊ฐ์ ๊ฐ์ฒด๋ก ์ด๋ป๊ฒ ๋ถ๋ฐฐํ๋์ง, ๊ทธ๋ฌ๋ฉด์ ๊ฐ์ฒด ์ฌ์ด์ ๊ฒฐํฉ๋๋ฅผ ์ต์ํํ๋ ๊ฒ์ ์ค์
๊ฐ๊ฐ์ ์นดํ ๊ณ ๋ฆฌ์๋ ์๋์ ๊ฐ์ ๋์์ธ ํจํด๋ค์ด ์์ต๋๋ค
์์ฑ (Creational) ํจํด | ๊ตฌ์กฐ (Structural) ํจํด | ํ๋ (Behavioral) ํจํด |
Builder | Bridge | Interpreter |
Prototype | Decorator | Template Method |
Factory Method | Facade | Chain of Responsibility |
Abstract Method | Flyweight | Command |
Singleton | Proxy | Iterator |
Composite | Mediator | |
Adapter | Memento | |
Observer | ||
State | ||
Strategy | ||
Visitor |
Tmi.
์ ๋ ๋น์ ๊ณต์๋ผ ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ๋ฅผ ๊ณต๋ถํ ๋ ์ฒ์
์ด ์น๊ตฌ๋ค์ ์๊ฒ ๋์๋๋ฐ ๊ทธ ๋ ์๋ฌด๊ณ ํ ๋ชจ๋ฅด๊ณ ์๊ตฌํ..
์๋นํ๋กํฉ์ ์ฑ.. ๋จธ ์ด๋ฌ๋ฉด์ ๋ ๋ค ์ธ์ฐ๊ธฐ๋ง ํ๋ค์..
์ด์ .. ์ดํด๋ผ๋ ๊ฒ์ ํ ์ ์๊ฒ ์ฃ ..?
๐ ๊ทธ๋ฌ๋ฉด ๋์์ธ ํจํด์๋ ์ด๋ค๊ฒ ๋ค์ด์๋๋ฐ์?
ํจ๋ฌธ์ ์ฌ๊ฒฐ์์ด์ ! ใ -> ์ ์ฒ๊ธฐ์ ๋ถ์์ฉ.
๋์์ธ ํจํด์
' ํจํด ์ด๋ฆ, ๋ฌธ์ ๋ฐ ๋ฐฐ๊ฒฝ, ์๋ฃจ์ , ์ฌ๋ก , ๊ฒฐ๊ณผ, ์ํ ์ฝ๋ '
๋ก ๊ตฌ์ฑ๋์ด์์ต๋๋ค.
ํจํด์ด๋ฆ์ ํตํด์ ํด๋น ํจํด์ ์๋ฃจ์ ์ ์ฝ๊ฒ ํ์ ํ๊ณ
๋ฌธ์ ์ ์๋ฅผ ํตํด ์ธ์ ํจํด์ ์ฌ์ฉํ ์ง, ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ง,
ํจํด์ ์ ์ฉํ๋๊ฒ์ด ์๋ฏธ ์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค.
์๋ฃจ์ ์ ํตํด ์์ ๋ค๋ฃฌ ๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์ ๊ฒ์ธ๊ฐ์ ๋ํด ํด๊ฒฐ์ฑ ์ ์ ์ํฉ๋๋ค.
๊ฒฐ๊ณผ๋ฅผ ํตํด ๋์์ธ ํจํด์ ์ ์ฉํด์ ์ป๋ ๊ฒฐ๊ณผ์ ์ฅ๋จ์ ์ ์๋ ค์ค๋๋ค !
+
์ํ์ฝ๋
๐ฐ ๋์์ธ ํจํด์ ์ด๋ป๊ฒ ๊ณต๋ถํ๋ฉด ์ข์๊น์ ?
์ ๊ฐ ๊ตฌ๊ธ์ ํตํด์ ์ข ์ฐพ์๋ดค๋๋ฐ
์ ๋ต์ ์๋์ง๋ง, ์ถ์ฒํ๋ ๊ณต๋ถ ๋ฐฉ๋ฒ์ด ์๋๋ผ๊ตฌ์ !
1. ์์ฑ , ๊ตฌ์กฐ, ํ๋ ํจํด์ด ๊ฐ๊ฐ ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋์ง ํ์
2. ํจํด๋ค ๊ฐ์ ๊ด๋ จ์ฑ ํ์
3. ๋น์ทํ ๋ชฉ์ ์ ํจํด๋ค์ ํจ๊ป ๋ชจ์์ ๊ณต๋ถ
ex) ์ถ์ํฉํ ๋ฆฌ ํจํด์ ๊ณต๋ถํ๋ค๋ฉด ์ด์ด์ ํฉํ ๋ฆฌ๋ฉ์๋ ํจํด์
ํ์ตํด๋ณด๊ณ ๊ฐ๊ฐ ์ด๋ค ๊ณตํต์ ๊ณผ ์ฐจ์ด์ ์ด ์๋์ง ๋น๊ตํ์ฌ ์ ๋ฆฌํ๊ธฐ
4. ๋์์ธ ํจํด์ด ์ต์ํ์ง ์์ ์ด๋ณด๋ค์ ๋ฐ๋์ ์์ ์ฝ๋ ์์ฑํด๋ณด๊ธฐ
๐ ์๋ ๊ทธ๋ฌ๋ฉด ์ด๋ ๊ฒ ๊ณต๋ถํ ๋์์ธํจํด์ ์ธ์ ์ฐ๋์..?
์ง๊ธ ๋์์ธ์ ๋ฌธ์ ์ ์ ํฉํ ํจํด์ด ์๋ค๋ ์๊ฐ์ด ๋ ๋ค๋ฉด
๊ทธ ๋์์ธ ํจํด์ ๋์ ํด ๋ณด๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค !
๋ฌผ๋ก ๋ ๊ฐ๋จํ ํด๊ฒฐ์ฑ ์ด ์๋ค๋ฉด, ํจํด์ ์ ์ฉํ๊ธฐ ์
๊ทธ ํด๊ฒฐ์ฑ ์ ๋ํด ๊ณ ๋ฏผํด๋ณด๋๊ฒ ์ข๊ฒ ์ฃ !
์ฌ์ค ์ธ์ ํจํด์ ์ ์ฉํ ์ง ์ฌ๋ฐ๋ฅด๊ฒ ๊ฒฐ์ ํ๋ ค๋ฉด
๋ง์ ๊ฒฝํ์ด๋ ์ง์์ด ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค :)
์ด๋ค ํจํด์ ์จ์ผํ ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค๋ฉด, ๋ฌธ์ ํด๊ฒฐ์ ๋์์ด
๋ ๋งํ ํจํด์ด ์์์ง ํ์ด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค !
โ ๏ธ ๋์์ธ ํจํด์ ์ฐ๋ฉด ์์ข์ ์ ๋ ์๋์ ??
๋จ์ํ ๋์์ธ ํจํด์ ์๊ณ ์ฌ์ฉํ๋ค๊ณ ํด์ ์ ์ค๊ณ๋
์ํํธ์จ์ด๋ฅผ ๋ง๋ค ์ ์๋ค๋ ๋ณด์ฅ์ด ์๋๊ฑด ์๋๊ฒ ์ฃ .. ๐
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ํฉ์ ๋ง๋ ์ ์ ํ ๋์์ธ ํจํด์ ์ฐธ๊ณ ํ์ฌ
๊ตฌํํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํฉ๋๋ค !
๋์์ธ ํจํด์ ํ์ ์ด์์ผ๋ก ์ฌ์ฉํ๊ฒ ๋๋ฉด ํ๋ก์ ํธ๊ฐ ์ ์
๋ณต์กํด์ง๊ธฐ ๋๋ฌธ์ , ์ด๋ค ์ด์๊ฐ ์๊ฒผ์ ๋ ๋ฌธ์ ๋ฅผ ๋ช ํํ๊ฒ
์ ์ํ ํ์ ๋์์ธ ํจํด์ ์ฌ์ฉํ๋๊ฒ ๋ฐ๋์งํ๋ค๊ณ ํฉ๋๋ค :)
'iOS > Design Pattern' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Design Pattern) ๊ตฌ์กฐํจํด #1 - Bridge Pattern (2) | 2022.05.12 |
---|---|
Design Pattern ) ๋์์ธํจํด ๊ฐ์ 2ํธ (0) | 2022.05.05 |
Design Pattern) ์์ฑํจํด #1 - ํฉํ ๋ฆฌ ํจํด (0) | 2022.05.05 |