[Cocoa Design Pattern] 22. Flyweight pattern

**22. ํ๋ผ์ด ์จ์ดํธ ํจํดย **
**ํ๋ผ์ด์จ์ดํธ ํจํด์ด๋?**
โ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ๋ ํ์ํ ๋ฉ๋ชจ๋ฆฌ์ ์๊ณผ ํ๋ก์ธ์ ์ค๋ฒํค๋๋ฅผ ์ต์ํ์ํจ๋ค.ย
โ ์ธ์คํด์ค ๊ณต์ ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ์ฌ, ์ค์ ์ธ์คํด์ค์ ์๋ฅผ ์ค์ฌ์ค๋ค.ย
**ํจํด์ด ๋ง๋ค์ด์ง ๋๊ธฐ **
โ ๋น โ ๊ฐ์ฒด ๋ฐ์ดํฐ๋ฅผ ์บก์ํํ์ฌ ๊ฐ์ฒด๊ฐ ํ์ํ ์ปจํ
์คํธ์ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค.ย
โ ๋ง์ ์์ ์ธํธ์ ํธ๊ฐ ํ์ํ ๋ ์ ์ฅ๊ณต๊ฐ ์๊ตฌ๋ฅผ ์ค์ฌ์ค๋ค.ย
โ ๋ค๋ฅธ ๊ฐ์ฒด์ ๋์ญ์ผ๋ก ํ๋ํ๋ค.ย
**ํจํด์ผ๋ก ๋ฌธ์ ํด๊ฒฐ**
์คํ๋ ๋ ์ํธ์ ๊ฒฝ์ฐย
โ ํ๊ณผ ์ด์ ๋ชจ๋ ์
์ ๊ฐ๊ฐ์ ์ธ์คํด์ค๋ก ํ์ํ ๊ฒ์ธ๊ฐ?
โ ๊ณต์ ๊ฐ๋ฅํ ์ธ์คํด์ค : ์
์ด ๋น์ด ์๋ ๊ฒฝ์ฐ, ๋์ผํ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ ๊ฒฝ์ฐ (SpreadSheetCell)
โ ํฌ๋งท ์ ๋ณด์ ๋ถ๋ฆฌ (SpreadSheetCellFormat)
โ ์ธ์คํด์ค ๊ณต์ ๋ฅผ ํตํด์ ์ด ์ฌ์ฉํ๋ ์ธ์คํด์ค์ ์๋ฅผ ์ค์ผ์ ์๋ค.ย
โ ์ธ์คํด์ค์ ์ ์ฅ๋ ์ ๋ณด์ ์ผ๋ถ๋ฅผ ๋ฐ๋ก ํด๋์คํ ํจ์ผ๋ก์จ ์ ์ฅ์ ์ต์ํ ์ํจ๋ค.ย
**
์ฝ์ฝ์ ์ฌ์ฉ ์์
**
**3๊ฐ์ง ๋ชฉ์ :
**
1. ๋น-๊ฐ์ฒด ๊ฐ์ ์บก์ํย
2. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ์ค์ด๊ธฐย
3. ๋ค๋ฅธ ๊ฐ์ฒด์ ๋์ญ์ผ๋ก ์ฌ์ฉ
**๋น-๊ฐ์ฒด ๊ฐ์ ์บก์ํย
**
* NSNumber
ย โ char, int, long, float ์ ๊ฐ์ ์ซ์ํ ๋ฐ์ดํฐ ํ์
, bool ๊ณผ ๊ฐ์ธ ๋ฐ์ดํฐ ํ์
๋ ๊ฐ์ฒดํ์ผ๋ก ์ ํ ๊ฐ๋ฅ
ย โ NSNumber ์ ์ํผํด๋์ค์ธ NSValue ๊ฐ ๋น๊ฐ์ฒด ๋ฐ์ดํฐ ํ์
์ ๊ฐ์ฒด ๋ํผ๋ฅผ ์ ๊ณต.ย
* NSDecimalNumber, NSDate, NSString ๋ฑ๊ณผ ๊ฐ์ ํด๋์ค ๋ชจ๋ ๋น ๊ฐ์ฒด ๊ฐ์ด๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ผ๋ค.ย
**์ ์ฅ๊ณต๊ฐ ์๊ตฌ ๊ฐ์ย **
NSNumber ์ธ์คํด์ค ๊ณต์ ย
โ ์ต๊ทผ์ ์ฌ์ฉํ ํน์ ์์ฃผ ์ฌ์ฉํ๋ NSNumber ์ธ์คํด์ค๋ ์บ์์ ์ ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ์์ฒญ์ด ์ค๋ฉด ๊บผ๋ด์ ๋ฐํํจ.ย
โ ์ธ์คํด์ค ๊ณต์ค๋ ํด๋น ํด๋์ค๊ฐ ์์ ๋ถ๊ฐ๋ฅ ํ ๋๋ง ๊ฐ๋ฅํ๋ค.ย
NSFont, NSColor ์ญ์ ์์ ๋ถ๊ฐ๋ฅํ ์ธ์คํด์ค๋ฅผ ์บ์ํ๊ณ ์ฌ์ฌ์ฉํจ.ย
NSCellย
โ NSCell ์ ์ธ์คํด์ค๋, NSString, NSImage ์ ํฌ์ธํฐ์ ๊ฐ์ด ์๋์ ์ผ๋ก ๋จ์ํ ๊ฐ๋ง ์ ์ฅ.ย
โ NSView ๊ฐ 80๋ฐ์ดํธ๋ฅผ ์ฌ์ฉํจ์ ๋นํด NSCell์ 20๋ฐ์ดํธ ์ฌ์ฉํจ.ย
โ NSTableView์ NSMatrix ์์ ์ฌ์ฉํจ์ผ๋ก์จ ์ ์ฅ๊ณต๊ฐ ๊ฐ์ ํจ๊ณผย
**๋ค๋ฅธ ๊ฐ๊ฐ์ฒด์ ๋์ญ์ผ๋ก ์ฌ์ฉย **
โ ์ข๋ ๋ฌด๊ฑฐ์ด ๋ค๋ฅธ ๊ฐ์ฒด์ ์์ ์๋ฆฌํ์์ ์ญํ ์ํ
โ NSTextView : ํ
์คํธ ํ์์ ์
๋ ฅ์ ๋ค๋ฃจ๋ ํด๋์คย
โ ๊ทธ๋ฌ๋, ๋ฐฐ์น ์ ์ฅ, ์ฒ ์ํ์ธ ๊ณผ ๊ฐ์ ๋ค์ํ ํ
์คํธ ๊ด๋ จ ๊ธฐ๋ฅ์ ๋ํ ๋ถ๋ถ์ ๋ค๋ฅธ ํด๋์ค์ ํ๋ ฅํ๋ค.ย
โ ๋ณต์กํ ํ
์คํธ ๊ด๋ฆฌ ์์คํ
์ ํ๋ผ์ด์จ์ดํธ ์๋ฆฌํ์์๋ก NSCell์ ์ฌ์ฉย
**ํจํด ์ฌ์ฉ ๊ฒฐ๊ณผ ย **
โ ํจํด์ ์ฌ์ฉํ๋ ๊ฒ์ ๋ ๋์์ธ์ ๋ณต์กํ๊ฒ ํ๋ค.ย
ex) C ์ธ์ด์ ๋ฐ์ดํฐ ํ์
๊ณผ NSNumber ์ฌ์ด์์์ ๋ฐ์ดํฐ ๋ณํย
โ ๋ถ๋ช
ํ ์ ์ฅ๊ณต๊ฐ๊ณผ ์ฑ๋ฅ์ ์ต์ ํ ํจ๊ณผ๊ฐ ์๋ค.ย
โ ๊ทธ๋ฌ๋, ๋ง์ฝ NSCell์ NSView ๋์ ์ ์ฌ์ฉ ํ๋ค๋ฉด, ์ฝ์ด ์ ๋๋ฉ์ด์
๊ณผ ๊ฐ์ ๊ณ ๊ธ ๋ทฐ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๋ค.ย
โ ์ฑ๋ฅ์ ์ธ ๋ถ๋ถ์๋ ๋ฌธ์ ๊ฐ ์์์๊ฐ ์๋ค.ย
โ ํ๋ผ์ด์จ์ดํธ์ ์ฌ์ฉ์ด ๋ณต์ก๋๋ฅผ ์ฆ๊ฐ
โ ๊ฐ๋ฐํ๋ ค๋ ์ดํ๋ฆฌ์ผ์ด์
์์ ์ ์ฅ๊ณต๊ฐ๊ณผ ์ฑ๋ฅ์ ์ต์ ํ์ ๋ํ ์ด์๊ฐ ์๋ค๋ฉด ์ฌ์ฉํด๋ผ. ์๋๋ฉด ๊ถ์ฅํ์ง ์๋๋ค.ย
ย ย
ย
#cocoa design pattern
#dev
#Flyweight
#IOS
#ios dev
#pattern
#์์ดํฐ ์ฑ ๊ฐ๋ฐ