λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

πŸ“± Mobile/iOS

[iOS - Swift] Singleton Pattern 싱글톀 νŒ¨ν„΄μ΄λž€?

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의 μž₯단점

μž₯점

- ν•œ 번의 μΈμŠ€ν„΄μŠ€λ§Œ μƒμ„±ν•˜λ―€λ‘œ λ©”λͺ¨λ¦¬ λ‚­λΉ„λ₯Ό 방지할 수 있음

- λ‹€λ₯Έ ν΄λž˜μŠ€λ“€κ³Ό μžμ› κ³΅μœ κ°€ μš©μ΄ν•˜λ‹€.

 

단점

- 싱글톀 μΈμŠ€ν„΄μŠ€κ°€ λ„ˆλ¬΄ λ§Žμ€ 일을 ν•˜λ©΄ 개방 폐쇄 원칙을 μœ„λ°°ν•΄μ„œ 객체 지ν–₯ 섀계 원칙에 μ–΄κΈ‹λ‚œλ‹€.

 

 

728x90