λͺ¨λ μ½λλ Swiftλ‘ μμ±λμμ΅λλ€.
λ¬Έμ μν©
λ°μ΄ν°λ₯Ό μ½κ³ μ°λ μν μ νλ κ°μ²΄κ° μκ³ μ½λμ μ¬λ¬ κ³³μμ μ΄ κ°μ²΄λ₯Ό μ¬μ©νλ€κ³ κ°μ ν΄ λ³΄μ. κ°κ°μ μ½λ μμμμ μ΄ κ°μ²΄μ μΈμ€ν΄μ€λ₯Ό μΌμΌμ΄ μμ±νλ€λ©΄ λ κ°μ§ λ¬Έμ μ μ΄ λ°μν μ μλ€.
첫째, λͺ¨λ μ½λ μμμμ μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό κ³μ μμ±νκΈ° λλ¬Έμ λ©λͺ¨λ¦¬κ° λ§μ΄ μ¬μ©λλ€.
λμ§Έ, νλμ μ½λ μμμμμ μμ κ²°κ³Όκ° λ€λ₯Έ μ½λ μμμ 곡μ λμ§ λͺ»ν μ μλ€. μ¦, A μ½λ μμμμ λ°μ΄ν°λ₯Ό μ μ₯μμΌ λ¨μ§λ§, B μ½λ μμμμλ μλ‘μ΄ μΈμ€ν΄μ€λ₯Ό μμ±νκΈ° λλ¬Έμ A μμμμ μ μ₯μμΌ°λ λ°μ΄ν°μ μ κ·Όν μ μμ κ²μ΄λ€.
μ±κΈν€ ν¨ν΄
μ±κΈν€ ν¨ν΄μ μμ© νλ‘κ·Έλ¨ μ 체μ κ±Έμ³ μ μΌν κ°μ²΄λ₯Ό λ§λ€μ΄ μ μμ μΌλ‘ λ°μ΄ν° 곡μ λ₯Ό ν μ μκ² ν΄μ£Όλ λμμΈ ν¨ν΄μ΄λ€.
μ½λ μμ
class DataStorage { // μ±κΈν€ κ°μ²΄
static let shared = DataStorage() // μ μΌ κ°μ²΄μ μ κ·Όν μ μλ static νλ‘νΌν°
private var someData = 0
private init() {} // μ΄κΈ°νλ¬Έμ privateμΌλ‘ μ€μ ν¨μΌλ‘μ¨ μ μΌ κ°μ²΄ 보μ₯
func setData(data: Int) {
someData = data
}
func getData() -> Int {
return someData
}
}
class A {
func setData(data: Int) {
DataStorage.shared.setData(data: data)
}
}
class B {
func getData() {
let data = DataStorage.shared.getData()
print(data)
}
}
let a = A()
let b = B()
a.setData(data: 2)
b.getData() // 2
μ₯μ
λ€μν κ°μ²΄λ€μκ² μμ μ μνλ₯Ό 곡μ ν μ μλ€. λν, νλμ μΈμ€ν΄μ€λ§ μμ±ν΄ μ¬μ¬μ©νλ―λ‘ λ©λͺ¨λ¦¬ λλΉλ₯Ό λ°©μ§ν μ μλ€.
λ¨μ
SOLID μμΉμ μλ°°λλ μ¬λ‘κ° λ§λ€. μ°μ μ±κΈν€ μΈμ€ν΄μ€ μμ²΄κ° νλλ§ μμ±νκΈ° λλ¬Έμ μ¬λ¬ κ°μ§ μ± μμ μ§λκ² λλ κ²½μ°κ° λ§μ λ¨μΌ μ± μ μμΉ(SRP)μ μλ°νκΈ°λ νκ³ , μ±κΈν€ μΈμ€ν΄μ€κ° νΌμ λ무 λ§μ μΌμ νκ±°λ, λ§μ λ°μ΄ν°λ₯Ό 곡μ μν€λ©΄ λ€λ₯Έ ν΄λμ€λ€ κ°μ κ²°ν©λκ° λμμ§κ² λμ΄ κ°λ°©-νμ μμΉ(OCP)μλ μλ°°λλ€. λν, ν΄λΌμ΄μΈνΈ κ°μ²΄κ° μΈν°νμ΄μ€κ°μ΄ μΆμνλ κ°μ²΄κ° μλ ꡬ체 ν΄λμ€λ₯Ό μμ‘΄νλ―λ‘ μμ‘΄κ΄κ³ μμ μμΉ(DIP)μλ μλ°°λλ€.
λν, μ΄λμμλ μ¬μ©ν μ μλ€λΌλ μ₯μ μ΄ λ¨μ μ΄ λκΈ°λ νλλ°, ν΄λΉ μ±κΈν€ κ°μ²΄μ κ΄λ ¨λ μμ μμ μ€λ₯κ° λλ€λ©΄ μ΄μ λν νΈλ¬λΈμν μ΄ μ΄λ €μμ§λ€.
π Swiftμμμ μ±κΈν€ ν¨ν΄
UserDefaultsλ NotificationCenter, URLSession μ½λλ₯Ό μμ±νλ€ λ³΄λ©΄ standard, default νΉμ shared νλ‘νΌν°λ₯Ό νμΈν΄ λ³Ό μ μλ€. μ΄ νλ‘νΌν°λ€μ Swiftμμ μ 곡νλ μ±κΈν€ κ°μ²΄μ μΈμ€ν΄μ€λ₯Ό μλ―Ένλ static νλ‘νΌν°μ΄λ€.
μ±κΈν€ ν¨ν΄μ λ¬Έμ μ μ μ±κΈν€ κ°μ²΄μ λ°μ΄ν° λ³νμ μμ μ΄ μμ‘΄νκ³ μλ μ¬λ¬ κ°μ²΄λ€μκ² μν₯μ λΌμΉλ€λ κ²μΈλ°, μΈμ΄ μ체μμ μ κ³΅ν΄ μ£Όλ μ±κΈν€ κ°μ²΄μ κ²½μ° ν° λ¬Έμ λ λ°μνμ§ μλλ€. νμ§λ§, μ±κΈν€ κ°μ²΄λ₯Ό μ§μ λ§λ λ€λ©΄ κΈ°λ₯μ λ³λμ¬νμ λ°λΌ μμ μ΄ μμ£Ό λ°μνμ§ μμ κ°μ²΄μΈμ§, ν΄λΉ κ°μ²΄κ° κ°μ§ λ°μ΄ν°μ λ³νκ° μν₯λ ₯μ΄ ν¬μ§ μμμ§ κ³ λ €ν΄ λ³Ό νμκ° μλ€λ μ¬μ€μ κΈ°μ΅νμ.
'CS > λμμΈ ν¨ν΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[GoF λμμΈ ν¨ν΄] - νλ‘ν νμ ν¨ν΄ (0) | 2024.11.29 |
---|---|
[GoF λμμΈ ν¨ν΄] - λΉλ ν¨ν΄ (0) | 2024.11.28 |
[GoF λμμΈ ν¨ν΄] - μΆμ ν©ν 리 λ©μλ ν¨ν΄ (2) | 2024.11.26 |
[GoF λμμΈ ν¨ν΄] - ν©ν 리 λ©μλ ν¨ν΄ (1) | 2024.11.25 |
[GoF λμμΈ ν¨ν΄] - λμμΈ ν¨ν΄μ΄λ? (1) | 2024.11.22 |
λκΈ