μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 |
- APPJAM
- GroupBy
- μ°μνμ€λΆλΆμμ΄μν©
- HAVIT
- IOS
- BFS
- μ΄μ§νμ
- λ€μ΄λλ―Ήνλ‘κ·Έλλ°
- λμ κ³νλ²
- URLSession
- SOPT
- Swift
- SwiftUI νν 리μΌ
- algorithm
- concurrency
- νλ‘κ·Έλλ¨Έμ€
- SwiftUI
- duno
- κ³ λμ kit
- DynamicProgramming
- binarySearch
- SQL
- 0μ΄λμ΄μλκΈΈ
- dfs
- algoritm
- κΈ°μ΄λ¬Έλ²
- Til
- GCD
- discardableResult
- SwiftUI Tutorials
- Today
- Total
suvera-dev π₯¦
Design Pattern ) λμμΈν¨ν΄ κ°μ 2νΈ λ³Έλ¬Έ
λμμΈ ν¨ν΄ κ°μ 2νΈμ μ°κ² λ μ΄μ λ
λμμΈ ν¨ν΄μ λν ν¬μ€ν μ λͺ κ° λ³΄λ€κ°
μ 리νκ³ μΆμ λ΄μ©μ λ°κ²¬νκΈ° λλ¬Έ ! γ
μ΄ κΈμ λ°νμΌλ‘ μ 리ν λ΄μ©μ λλ€.
λμμΈν¨ν΄ μ€ μμ±ν¨ν΄ λ¨Όμ 곡λΆνκΈ° μν΄ μ°Ύμ보λ€λ³΄λ
ν΄λμ€μ κ°μ²΄λ₯Ό λ§λλ κ³Όμ μμΊ‘μννλ€.
μ΄λ°μμΌλ‘ λ§μ΄ μκΈ°λ₯Ό νλλΌκ΅¬μ
κ·Έλμ ν΄λμ€, κ°μ²΄, μΊ‘μν μ΄λ° κ°λ λ€μ μ§κ³ λμ΄κ°μ’ ..
κ³ λ° λλμ λλ€..
κ°μ²΄ μ§ν₯ νλ‘κ·Έλ¨μμ κ°μ²΄λ 무μμ΄κ³ , μ λΉν κ°μ²΄μ κ·λͺ¨λ₯Ό μ νκΈ° μν΄μ
λμμΈν¨ν΄μ μ΄λ€λλ° κ·Έλ° μ 체μ μΈ νλ¦ ? μ λ³΄κ³ λμ΄κ°κ³ μΆμμ΅λλ€ !
1. κ°μ²΄ μ§ν₯ νλ‘κ·Έλ¨μμμ 'κ°μ²΄'
κ°μ²΄λ λ°μ΄ν°μ λ°μ΄ν°μ μ°μ°μ κ°νλ νλ‘μμ λ₯Ό ν¨κ» λ¬Άμ λ¨μμ λλ€.
νλ‘μμ λ μΌλ°μ μΌλ‘ λ©μλ λλ μ°μ°μ΄λΌκ³ λΆλ¦ λλ€.
κ°μ²΄λ μ¬μ©μλ‘λΆν° μμ² λλ λ©μΈμ§λ₯Ό λ°μΌλ©΄ μ°μ°μ μννκ² λ©λλ€ !
μμ²μ κ°μ²΄κ° μ°μ°μ μ€ννκ² νλ μ μΌν λ°©λ²,
μ°μ°μ κ°μ²΄ λ΄λΆ λ°μ΄ν°μ μνλ₯Ό λ³κ²½νλ μ μΌν λ°©λ²μ΄λΌκ³ ν©λλ€
μ¬κΈ°μ μμ²μ λμ§λ κ°μ²΄ μΈλΆμμλ λ΄λΆ λ°μ΄ν°μ
μ§μ μ κ·Όμ ν μ μμ΅λλ€.
μ¦, λ΄λΆμ μν©μ λͺ¨λ₯΄λ κ²μ΄μ£ !
μ΄λ° μνλ₯Ό μΊ‘μνλμλ€κ³ ννν©λλ€.
-
κ°μ²΄μ§ν₯ νλ‘κ·Έλλ°μ
κ°μ²΄λΌλ¦¬ νλ ₯νμ¬ κ°μμ μν μ μννλ μμΌλ‘ ꡬμ±λ©λλ€.
κ·Έλ κΈ° λλ¬Έμ κ°μ²΄μ λΆν μ΄ μ΄λ£¨μ΄μ ΈμΌν©λλ€.
κ°μ²΄μ λΆν μ
μΊ‘μν, ν¬κΈ°μ νκΈ°, μ’ μμ±, μ μ°μ±, μ±λ₯, μ§ν, μ¬μ¬μ©μ± λ±λ±
λ€μν μμΈμ κ³ λ €ν΄μ μ²λ¦¬ν΄μΌν©λλ€.
λμμΈν¨ν΄μ ν΅ν΄ κ°μ²΄λ₯Ό μ΄λμ λ λΆν νκ³
μ΄λ€ κ΄μ μΌλ‘ λ€λ€μΌνλμ§μ λν λ°©λ²λ€μ μμλ³΄κ² λ κ² κ°μ΅λλ€ !
2. κ°μ²΄μ ν¬κΈ° κ²°μ νκΈ°
νλ‘κ·Έλ¨μ μ€κ³ν λ, κ°μ²΄λ λ°λμ λͺκ°λ₯Ό μ¬μ©ν΄μΌ νλ€! μ²λΌ μ ν΄μ§κ² μμ΅λλ€
κ·Έλ¬λ©΄ μ λΉν κ°μ²΄μ κ·λͺ¨λ μ΄λ»κ² μ ν κΉμ?
=> λμμΈν¨ν΄μμ λ΅μ μ»μ !
1) νΌμ¬λ ν¨ν΄ : μλΈ μμ€ν μ μ΄λ»κ² κ°μ²΄λ‘ ννν μ μλμ§ μ€λͺ
μ΄λ₯Ό ν΅ν΄ μλΈ μμ€ν μ κ°μ²΄ ν¬κΈ°λ₯Ό κ²°μ ν μ μμ
2) μΆμ ν©ν 리 ν¨ν΄ / λΉλ ν¨ν΄ : λ€λ₯Έ κ°μ²΄λ₯Ό μμ±νλ μ± μλ§ μλ κ°μ²΄λ₯Ό λ§λ€μ΄λ΄λ λ²μ μ€λͺ
3) νλΌμ΄κΈ ν¨ν΄ : κ·λͺ¨λ μμ§λ§, κ°μκ° λ§μ κ°μ²΄λ₯Ό λ€λ£¨λ λ°©λ²μ μ€λͺ
4) λ°©λ¬Έμ ν¨ν΄ , λͺ λ Ή ν¨ν΄ : λ€λ₯Έ κ°μ²΄κ° μμ²μ μ²λ¦¬ν μ μλλ‘ μ± μμ§λ κ°μ²΄λ₯Ό
λ§λ€μ΄λ΄λ λ²μ μ€λͺ
=> μ΄λ° μ ννλ ν¨ν΄μ ν΅ν΄, κ° κ°μ²΄λ₯Ό μ΄λμ λλ‘ λΆλ¦¬νλμ§ νμ ν μ μκ³ ,
λΆλ¦¬ν κ°μ²΄λ₯Ό μ΄λ»κ² λ€λ£¨λμ§μ λν λ°©λ²μ μ΄ν΄ν μ μμ !
3. κ°μ²΄ μΈν°νμ΄μ€μ λͺ μΈ
protocol PlanPreviewRepositoryInterface {
func fetchBodyData(idx: Int, onCompleted: @escaping ([Int])) -> Void) -> Int
}
κ°μ²΄κ° μ μΈνλ λͺ¨λ μ°μ°μ
μ°μ°μ μ΄λ¦ (fetchBodyData),
맀κ°λ³μλ‘ λ°μλ€μ΄λ κ°μ²΄ (idx, onCompletd),
μ°μ°μ λ°νκ°(Int)μ λͺ μΈν©λλ€.
μ΄λ₯Ό μ°μ°μ μκ·Έλμ² λΌκ³ λΆλ₯΄κ² λ©λλ€.
SOILD ν λ 곡λΆνμλλ°, μ€μννΈμμλ μΈν°νμ΄μ€λ₯Ό
νλ‘ν μ½μ μ΄μ©ν΄ ꡬννκ³ νλ‘ν μ½ μμ λ©μλκ° μκ·Έλμ² κ°λ μ΄ λ©λλ€ !
κ·Έλ¦¬κ³ νμ μ μΈν°νμ΄μ€λ₯Ό λνλΌ λ μ¬μ©νλ μ΄λ¦μ μΌμ»«κ³ μμ΅λλ€.
νλ‘ν μ½ μ΄λ¦μ μ ν λ, μ΄λ¦ λμ -typeμ μ¬μ©ν΄ νλ‘ν μ½ μ΄λ¦μ
μ νλ κ²½μ°λ₯Ό 보μ μ μ΄ μμκ²λλ€! .μλ¬ν λ§₯λ½μ λ΄μμ λ€μ΄λ°μ μ§ννκΈ° λλ¬Έμ΄λΌκ³ ν΄μ !
-
μΈν°νμ΄μ€λΌλ¦¬λ μμμ΄ κ°λ₯νκΈ° λλ¬Έμ,
λ€λ₯Έ μΈν°νμ΄μ€κ° ν¬ν¨νλ μΈν°νμ΄μ€λ₯Ό μνΌνμ μ΄λΌκ³ λΆλ₯΄λ©°,
λ€λ₯Έ μΈν°νμ΄μ€λ₯Ό ν¬ν¨νλ μΈν°νμ΄μ€λ₯Ό μλΈνμ μ΄λΌκ³ λΆλ¦ λλ€ !
μ€μννΈμμ νλ‘ν μ½μ μμνκ² λλ©΄
μλΈνμ μ μνΌνμ μ μ μλ μ°μ°μ λ¬Όλ €λ°κ² λμ£ !
μΈλΆμμ κ°μ²΄λ₯Ό μ μ μλ λ°©λ²μ μΈν°νμ΄μ€ λ°μ μμ΄μΌ ν©λλ€ !!
μΈν°νμ΄μ€λ₯Ό ν΅ν΄μλ§ μ²λ¦¬λ₯Ό μμ²ν μ μκ³ ,
κ°μ²΄μ μΈν°νμ΄μ€λ μ΄λ»κ² ꡬννλμ§μ λν΄μλ μ§μ μ μ μμ΅λλ€ !
μλ? μΊ‘μν λμκΈ° λλ¬Έμ΄μ£
μΈν°νμ΄μ€λ κ°μ²΄ μ§ν₯μμμ κ°μ₯ κΈ°λ³Έμ μΈ κ°λ μ΄ λκ³ ,
κ°μ²΄λ μΈν°νμ΄μ€λ‘ μμ μ λλ¬λ΄κ² λ©λλ€.
μ΄λ¬ν μμ²κ³Ό κ·Έ μμ²μ μ²λ¦¬ν κ°μ²΄λ₯Ό νλ‘κ·Έλ¨ μ€ν μ€μ ,
μ¦ λ°νμμ λμ μ°κ²° μ§λ κ²μ λμ λ°μΈλ©μ΄λΌκ³ ν©λλ€.
λμ λ°μΈλ©μ νλ‘κ·Έλ¨μ΄ κΈ°λνλ κ°μ²΄λ₯Ό λμΌν μΈν°νμ΄μ€(νλ‘ν μ½)λ₯Ό κ°κ³ μλ κ°μ²΄λ‘
μΌλ§λ μ§ κ°μλΌμ°λκ² κ°λ₯νλ€λ μλ―Έκ° λ©λλ€.
=> μ΄λ¬ν λ체μ±μ λ€νμ±μ΄λΌκ³ ν©λλ€ ! κ°μ²΄ μ§ν₯ μμ€ν μ ν΅μ¬ κ°λ μ΄μ£ .
λ€νμ±μ ν΅ν΄ κ°μ²΄κ°μ κ²°ν©λλ₯Ό μμ κ³ , μλ‘ κ°μ κ΄λ ¨μ±μ λ€μν μμΌμ€λλ€.
μλ‘ λ€λ₯Έ κ°μ²΄λ μ±νν νλ‘ν μ½μ μ μν μμ²μ ꡬν λ°©λ²μ
μμ λ‘κ² μ νμ΄ κ°λ₯ν©λλ€.
κ²°κ΅, νλ‘ν μ½μ΄ μν¨κ±΄ λ€ λ§μ‘±ν μνμμ κ°μ μ²λ¦¬νλ λ°©μλ§ λ¬λΌμ§λ κ±°μ£ !
μμμ μΈκΈν μΈν°νμ΄μ€λ₯Ό μ΄λ»κ² μμ±ν μ§μ κ΄λ ¨λ λμμΈ ν¨ν΄μ
1) λ©λ©ν ν¨ν΄ : κ°μ²΄μ λ΄λΆ μνλ₯Ό μ΄λ»κ² μ μ₯νκ³ μΊ‘μν ν΄μΌνλμ§λ₯Ό μ μ, μ΄λ₯Ό ν΅ν΄
μΈν°νμ΄μ€μ λ€μ΄κ°μΌν κ², μλ κ²μ ꡬλΆν μ μμ
2) μ₯μμ ν¨ν΄/ νλ‘μ ν¨ν΄ : μ₯μλκ³ μ€μ¬λλ κ°μ²΄μ λμΌν μΈν°νμ΄μ€λ₯Ό κ°λλ‘
μ₯μμ/ νλ‘μ κ°μ²΄μ μΈν°νμ΄μ€λ₯Ό μμ²νλ λ°©λ²μ μ μ
μ΄λ₯Ό ν΅ν΄, ν΄λμ€ κ°μ μ μ¬ν μΈν°νμ΄μ€λ₯Ό μ μνλλ‘ νκ±°λ,
ν΄λμ€μ μΈν°νμ΄μ€μ μ¬λ¬κ°μ§ μ μ½μ μ ν¬ν©λλ€.
4. κ°μ²΄ ꡬν λͺ μΈνκΈ°
κ°μ²΄μ ꡬνμ ν΄λμ€λ₯Ό μ μνλ κ³Όμ μμ μ΄λ£¨μ΄μ§λλ€.
ν΄λμ€λ κ°μ²΄ λ΄λΆ λ°μ΄ν°μ νν λ°©λ²μ λͺ μΈνκ³ , μνν μ°μ°λ κ°μ΄ μ μνκ² λ©λλ€.
κ°μ²΄λ ν΄λμ€λ₯Ό μΈμ€ν΄μ€λ‘ λ§λ¦μΌλ‘μ¨ μμ±μ΄ λ©λλ€.
μ¦, κ°μ²΄λ ν΄λμ€μ μΈμ€ν΄μ€λΌκ³ ν μ μμ΅λλ€ !
ν΄λμ€λ κ°μ²΄λ₯Ό λ§λ€μ΄λ΄κΈ° μν μ€κ³λλΌκ³ νλ©΄
μ΄λ₯Ό μΈμ€ν΄μ€ν ν΄μ λ§λ
μΈμ€ν΄μ€λ μ€κ³λλ₯Ό λ°νμΌλ‘ ꡬνλ ꡬ체μ μΈ μ€μ²΄ ! μ λλ€
μΈμ€ν΄μ€λ λ©λͺ¨λ¦¬μ ν λΉμ΄ λ©λλ€.
* μΈμ€ν΄μ€ν : ν΄λμ€μ μΈμ€ν΄μ€ν κ³Όμ μ
κ°μ²΄ λ΄λΆμ λ°μ΄ν°μ λν 곡κ°μ ν λΉνκ³ , μ΄ λ°μ΄ν°λ€μ μ°μ°κ³Ό
κ΄λ ¨μ§λ κ³Όμ μ λλ€ !
-
ν΄λμ€ μμμ ν΅ν΄, κΈ°μ‘΄ ν΄λμ€μ κΈ°λ°μ λ μλ‘μ΄ ν΄λμ€λ₯Ό μ μν μ μμ΅λλ€.
μλΈν΄λμ€λ λΆλͺ¨ν΄λμ€κ° λ¬Όλ €μ€ μ°μ°μ΄λ ꡬνμ λ³κ²½ν μ μμ΅λλ€.
μ΄λ¬ν κ³Όμ μ μ€λ²λΌμ΄λλΌκ³ λΆλ¦ λλ€ !
μ€μννΈμμλ μ€λ²λΌμ΄λλΌλ ν€μλλ‘ μ€λ²λΌμ΄λ©μ΄ κ°λ₯νμ£ !
μμν΄λμ€λ λΆλͺ¨ν΄λμ€μ κΈ°λ₯μ κ·Έλλ‘ μ¬μ©ν μλ, ꡬνμ λ³κ²½ν μλ,
μμ λ§μ κΈ°λ₯μ μ μν μλ μκ² μ£ !
-
μΆμν΄λμ€λ λͺ¨λ μλΈν΄λμ€ μ¬μ΄μ 곡ν΅λλ μΈν°νμ΄μ€λ₯Ό μ μν©λλ€.
μΆμν΄λμ€λ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μμ΅λλ€
μΆμν΄λμ€κ° μλ ν΄λμ€λ ? ꡬ체 ν΄λμ€λΌκ³ ν©λλ€.
ꡬ체ν΄λμ€λ μΈμ€ν΄μ€λ₯Ό μμ±ν μ μμ΅λλ€ !
μΆμν΄λμ€μΈ protocol A λ
let a = A() μ κ°μ΄ μΈμ€ν΄μ€ μμ±μ΄ λΆκ°λ₯νκ³
ꡬ체ν΄λμ€μΈ class A λ
let a = A() μ κ°μ΄ μΈμ€ν΄μ€ μμ±μ΄ κ°λ₯ν©λλ€.
μμλ λ§νλ―μ΄ μ€μννΈμμλ μΈν°νμ΄μ€λ₯Ό νλ‘ν μ½λ‘ νννκ³
νλ‘ν μ½μ μ°μ°μ λν μ μλ§ μμ λΏ,
ꡬ체μ μΈ μ°μ°μ λν ꡬνμ μκΈ° λλ¬Έμ
λ°μ΄ν°μ μ°μ°μ μ°κ²°μ§λ νμ μ¦, μΈμ€ν΄μ€νκ° λΆκ°λ₯ ν©λλ€ !
5. κ°μ²΄ μ§ν₯μμ νλ 볡ν©νκΈ°
κ°μ²΄ μ§ν₯μμλ νλμ 볡ν©ν μ μλ λ°©λ²μ 3κ°μ§ μμ΅λλ€
1) μμ : μλΈ ν΄λμ€μ μν΄ μ°μ°μ ꡬννλ λ°©λ²
2) ν©μ± : λ€λ₯Έ κ°μ²΄λ₯Ό μ¬λ¬κ° λΆμ¬μ μλ‘μ΄ κΈ°λ₯ νΉμ κ°μ²΄λ₯Ό ꡬμ±νλ λ°©λ²
3) 맀κ°λ³μν : νμ μ μ μν λ νμ μ΄ μ¬μ©νλ λͺ¨λ νμ μ μ§μ νμ§ μμ μ± μ μνλ λ°©λ²
-
μμ
μλ‘ λ€λ₯Έ ν΄λμ€μ κ°μ²΄λ€μ΄ λμΌν νμ (νλ‘ν μ½)μ κ°μ§κ³ ,
ꡬνμ μ κ°κ°μΌλ‘ ν μ μμ΅λλ€.
νΉμ κ°μ²΄κ° μ΄λ€ ν΄λμ€μ μΈμ€ν΄μ€λΌκ³ λ§ν λ,
κ·Έ κ°μ²΄λ ν΄λμ€κ° μ μν μΈν°νμ΄μ€λ₯Ό μ§μνλ€λ λ»μ΄ μ¨κ²¨μ Έ μλ€.
- ν΄λμ€ μμ : κ°μ²΄μ ꡬνμ μ μ ν λ, μ΄λ―Έ μ μλ κ°μ²΄μ ꡬνμ λ°νμΌλ‘ νλ€.
μ½λμ λ΄λΆ ννꡬ쑰λ₯Ό 곡μ νκ² λλ€. μ΄λ―Έ λ€ κ°μΆ°μ§ μ°μ°κ³Ό λ°μ΄ν°λ₯Ό λ°μμ μ²λ¦¬νλ€.
( μμ νμ λ°μμ κ±°κΈ°μ μ΄λ§ λΆμ¬μ μλ‘μ΄ κ°μ²΄λ₯Ό λΉ λ₯΄κ² μ μν λ μ¬μ© )
κΈ°μ‘΄ ν΄λμ€λ₯Ό κ·Έλλ‘ μμν΄μ μ¬μ©ν μ μλ€λ©΄,
μλ‘μ΄ κ΅¬νμ λλ λΉμ©μ μ μ νΈ ! νμ§λ§ κ·Έλλ‘ κ΅¬νμ λ¬Όλ €λ°λλ€κ³
μ¬μ¬μ©μ΄ μλ²½νκ² μ΄λ£¨μ΄μ§μ§λ μμ
- μΈν°νμ΄μ€ μμ ( νλ‘ν μ½ μμ ) : μ°μ°μ μ μλ§ λ¬Όλ €λ°κ² λλ νμ
μ΄λ₯Ό ν΅ν΄, μ΄λ€ κ°μ²΄κ° λ€λ₯Έ κ°μ²΄ λμ μ μ¬μ©λ μ μλ κ²½μ°λ₯Ό μ§μ ν μ μκ²λ¨
μ΄λ¬ν μΈν°νμ΄μ€ μμμ μ₯μ ?
μ¬μ©μκ° μνλ μΈν°νμ΄μ€λ₯Ό κ·Έ κ°μ²΄κ° λ§μ‘±νκ³ μλ ν, μ¬μ©μλ€μ κ·Έλ€μ΄ μ¬μ©νλ
νΉμ κ°μ²΄ νμ μ λν΄ μ νμκ° μλ€.
μ¬μ©μλ€μ μ΄ κ°μ²΄λ€μ ꡬννλ ν΄λμ€λ₯Ό μ νμκ° μκ³ , νλ‘ν μ½μκ²λ§ μν€λ©΄ λλ€.
=> μ΄λ¬ν μμΉμ ν΅ν΄ μλΈ μμ€ν κ° μ’ μμ±μ΄ μμ΄μ§λ€ !
λ°λΌμ, ꡬνμ΄ μλ μΈν°νμ΄μ€μ λ°λΌ νλ‘κ·Έλλ°μ νλ κ²μ κΆμ₯νκ³ μλ€
* μ΄λ€ λ³μλ₯Ό ꡬ체 ν΄λμ€μ μΈμ€ν΄μ€λ‘ μ μΈνλ μΌμ νΌνμ : DIP μλ°
λμ , μΆμ ν΄λμ€μ μΈν°νμ΄μ€λ₯΄ λ°λ₯΄λ μΈμ€ν΄μ€ λ³μλ₯Ό μ μν΄μΌνλ€ -> μμ‘΄μ± μ£Όμ
-
ν©μ±
ν΄λμ€ μμμ λ€λ₯Έ λΆλͺ¨ ν΄λμ€μμ μμλ°μ,
λ©μλμ λ°μ΄ν°λ₯Ό λ¬Όλ €λ°μ ν ν΄λμ€μ ꡬνμ μ μνλ κ²
λΆλͺ¨ν΄λμ€μ λ΄λΆκ° μλΈ ν΄λμ€μ 곡κ°λκΈ° λλ¬Έμ
νμ΄νΈλ°μ€ μ¬μ¬μ©μ΄λΌκ³ λΆλ₯΄κΈ°λ ν¨
κ°μ²΄ ν©μ± : λ€λ₯Έ κ°μ²΄λ₯Ό μ¬λ¬κ° λΆμ¬μ μλ‘μ΄ κ°μ²΄λ₯Ό ꡬμ±νλ κ²μΌλ‘,
ν©μ±μ λ€μ΄κ°λ κ°μ²΄λ€μ μΈν°νμ΄μ€λ€μ μ νν μ μν΄λκ³ ,
ν΄λΉ μΈν°νμ΄μ€λ€μ μ¬μ¬μ©νλ λ°©μμ ν΅ν΄ μ μλλ€.
κ°μ²΄μ λ΄λΆλ 곡κ°λμ§ μκ³ μΈν°νμ΄μ€λ₯Ό μ¬μ©νκΈ° λλ¬Έμ 'λΈλλ°μ€ μ¬μ¬μ©'
μ΄λΌκ³ λΆλ₯΄κΈ°λ ν¨
μ¬κΈ°μ ν΄λμ€μ μμμ, μλΈν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ΄ ꡬνμ μ’ μλ μ λ°μ μμΌλ―λ‘
λΆλͺ¨ ν΄λμ€ κ΅¬νμ λ³κ²½μ΄ μκΈ°λ©΄ μλΈν΄λμ€μλ λ³κ²½μ΄ μμ΄μΌ ν¨ !
κ°μ²΄ ν©μ±μ νκ² λλ©΄, κ° ν΄λμ€ κ° μΊ‘μν μ μ§κ° κ°λ₯νκ³
ν΄λμ€μ 1κ°μ§ μμ μ μ§μ€ν μ μλ€.
μ€μννΈμ massive viewcontrollerλ₯Ό λ§μ μ μλ€.
μ’ μμ±μ΄ μ€μ΄λ€κ³ μΊ‘μνλ₯Ό μ μ§ν μ μκΈ° λλ¬Έμ κ°μ²΄ν©μ±μ΄ ν΄λμ€ ν©μ±λ³΄λ€
λ λμ λ°©λ²μ΄λΌκ³ ν μ μλ€.
but, ν©μ±λ§μΌλ‘λ νλ‘μ νΈλ₯Ό μ€κ³νκΈ° λΆκ°λ₯νλ―λ‘ μμκ³Ό κ°μ²΄ ν©μ±μ μ μ ν μ‘°ν© !
-
맀κ°λ³μν : νμ μ μ μν λ νμ μ΄ μ¬μ©νλ λͺ¨λ νμ μ μ§μ νμ§ μμ μ± μ μ
κΈ°λ₯μ μ¬μ¬μ©μ μ΄μ©ν μ μλ λ€λ₯Έ λ°©λ²μ 맀κ°λ³μνλ νμ μ μ§μ νλ κ²
μ€μννΈμμλ μ λλ¦μ΄λΌλ κΈ°λ₯μ ν΅ν΄ κ°λ₯ν©λλ€.
κ°μ²΄λ₯Ό μμ±ν λ, νμ μ λͺ μνλ κ²μ΄ μλλΌ λμ€μ μ§μ νλλ‘ν΄μ μ‘°κΈ λ μ μ°νκ²
κ°μ²΄ μ€κ³κ° κ°λ₯ν©λλ€.
struct Stack<T> {
var items = [T]()
mutating func push(item: T) {
items.append(item)
}
mutating func pop() -> T {
return items.removeLast()
}
}
var stackOfAny = Stack<μ΄λ€ νμ
μ΄λ κ°λ₯>()
6. λ°νμ vs μ»΄νμΌ
λ§μ λμμΈ ν¨ν΄λ€μ μ»΄νμΌ μμ κ³Ό λ°νμ ꡬ쑰λ₯Ό λͺ μμ μΌλ‘ ꡬλΆνκ³ μμ
μμΌκΉμ
μ½λ ꡬ쑰μ κ²½μ°μλ μ»΄νμΌ μμ μμ νμ μ΄ λ©λλ€ : μμμ κ°λ
κ΅λ₯νλ κ°μ²΄κ° μ΄λ»κ² νλ ₯νλλμ λ°λΌ λ³νλ κ²μ λ°νμ μμ μ μΌμ΄λ©λλ€ : μ λμ κ°λ
=> μ΄λ€ κ°λ μ΄ λ³νκ³ λ³νμ§ μλ λ€λ κ²μ λͺ μν΄μ λ°νμ ꡬ쑰λ₯Ό μ€κ³ν΄μΌν¨ !
μ¬μ¬μ©μ μ΅λννκΈ° μν΄μλ
μλ‘μ΄ μꡬ μ¬νκ³Ό μμΌλ‘ λ°μν λ³κ²½μ μμΈ‘ν΄
μμΌλ‘μ μμ€ν μ€κ³κ° μ§νν μ μλλ‘ ν΄μΌν¨
κ²°κ΅ λ³νμ μ λμνκΈ° μν μννΈμ¨μ΄λ₯Ό λ§λ€κΈ° μν΄μλ
μ΄λ€ λ³νλ₯Ό μ΄λ»κ² μμ©ν μ§λ₯Ό κ³ λ €ν΄μΌνλ€λ κ²μ λλ€ !
κ²°λ‘ μ μΌλ‘ λμμΈν¨ν΄μ ν΅ν΄
κ°μ²΄λ³λ‘ λ 립μ μΌλ‘ λ³νμ μ μ ν μ μλ ꡬ쑰λ₯Ό λ§λ€μ΄ λ¬μ
νΉμ λ³νμ μμν μ μκΈ° λλ¬Έμ γ μμ κ°μ μνλλ₯Ό μ€μΌ μ μκ² λ©λλ€.
'iOS > Design Pattern' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Design Pattern) ꡬ쑰ν¨ν΄ #1 - Bridge Pattern (2) | 2022.05.12 |
---|---|
Design Pattern) μμ±ν¨ν΄ #1 - ν©ν 리 ν¨ν΄ (0) | 2022.05.05 |
Design Pattern ) λμμΈ ν¨ν΄ κ°μ (4) | 2022.04.13 |