๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ฑ 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