Singleton Pattern
μννΈμ¨μ΄ λμμΈ ν¨ν΄ μ€ νλμ΄λ©° νΉμ μ©λλ‘ κ°μ²΄λ₯Ό νλλ§ μμ±ν΄μ
곡λμΌλ‘ μ¬μ©νκ³ μΆμ λ μ¬μ©νλ λμμΈ μ νμ΄λ€.
ν΄λμ€μ μΈμ€ν΄μ€κ° νλλ§ μμ±λλλ‘ λ³΄μ₯νκ³ μ΄ ν¨ν΄μ μ¬μ©νλ©΄
μ΄λμλ ν΄λΉ ν΄λμ€μ μΈμ€ν΄μ€μ μ κ·Όν μ μκ²λλ€.
μ¦, μ± μ λ°μμ 곡μ λλ λ°μ΄ν°λ κΈ°λ₯μ κ΄λ¦¬νκΈ° μ©μ΄ν΄μ§λ€.
Singleton Pattern μ νΉμ§
1. λ¨ νλμ μΈμ€ν΄μ€
2. μ μμ μ κ·Όμ
3. μ§μ° μ΄κΈ°ν
4. μ μ μν κ΄λ¦¬
νΉμ§μ΄ μ μλΏμ§ μλλ€λ©΄ μ½λλ‘ κ΅¬νν΄λ³΄κ² λ€.
Singleton Pattern μ½λλ‘ κ΅¬ννκΈ°
class StudentInfo {
var id : String?
var grade : Int?
var name : String?
}
νμμ idμ νλ , μ΄λ¦ μ 보λ₯Ό λ΄λ StudentInfo ν΄λμ€μ΄λ€.
IdViewControllerμμλ idλ₯Ό, GradeViewControllerμμλ gradeλ₯Ό, NameViewControllerμμλ nameμ
μ λ ₯ λ°μ StudentInfoμ μ μ₯μ νλ€κ³ νμ.
//IdViewController
let studentinfo = StudentInfo()
studentinfo.id = "202020716"
//GradeViewController
let studentinfo = StudentInfo()
studentinfo.grade = 4
//NameViewController
let studentinfo = StudentInfo()
studentinfo.name = "κΉκ°ν"
μ΄λ κ² λλ©΄ μ 보λ€μ νλμ μΈμ€ν΄μ€μ λͺ¨λ μ 보λ₯Ό μ μ₯ν΄μΌ νλλ°,
κ° μΈμ€ν΄μ€μ νλ‘νΌν°μλ§ μ μ₯μ΄ λ κ²μ΄λ€.
μ°Έμ‘°λ₯Ό ν΅ν΄μ μ²λ¦¬κ° κ°λ₯νμ§λ§ μ½λκ° λ무 μ§μ λΆν΄μ§ κ²μ΄λ€.
μ°λ¦¬λ μ΄λ° μν©μμ Singleton Pattern μ μ¬μ©νλ©΄ λλ€.
μ±κΈν€ ν¨ν΄μ μ¬μ©ν΄μ ν μΈμ€ν΄μ€μ μ΄λ ν΄λμ€μμλ μ κ·Ό κ°λ₯νκ² ν μ μλ€.
κ·ΈλΌ μ΄μ μ±κΈν€ ν¨ν΄μ λ§λ€μ΄λ³΄μ.
class StudentInfo {
static let shared = StudentInfo()
var id : String?
var grade : Int?
var name : String?
private init() { } //init ν¨μ μ κ·Όμ μ΄λ privateλ‘
}
Singletonμ μ₯λ¨μ
μ₯μ
- ν λ²μ μΈμ€ν΄μ€λ§ μμ±νλ―λ‘ λ©λͺ¨λ¦¬ λλΉλ₯Ό λ°©μ§ν μ μμ
- λ€λ₯Έ ν΄λμ€λ€κ³Ό μμ 곡μ κ° μ©μ΄νλ€.
λ¨μ
- μ±κΈν€ μΈμ€ν΄μ€κ° λ무 λ§μ μΌμ νλ©΄ κ°λ°© νμ μμΉμ μλ°°ν΄μ κ°μ²΄ μ§ν₯ μ€κ³ μμΉμ μ΄κΈλλ€.