[Cocoa Design pattern] 23. Decorator
![](http://ash84.net/wp-content/uploads/1/cfile23.uf.205946374E1D407127DB25.jpg)Β
**λ°μ½λ μ΄ν°λ?**
β μλΈν΄λμ±μ ν΅ν΄ κΈ°λ₯μ μΆκ°νλ λμ μ»΄ν¬μ§μ
μ ν΅ν΄μ 곡ν΅μ μΌλ‘ μ¬μ¬μ© κ°λ₯ν κΈ°λ₯μ κ°μ²΄μ μΆκ°
β μλΈ ν΄λμ±μ μ»΄νμΌ λ¨κ³μμ μ μν΄μΌ νμ§λ§, λ°μ½λ μ΄ν°λ λ°νμ λ¨κ³μμ μΆκ° λ° κ΅¬μ± κ°λ₯ν¨.Β
ex) NSScrollViewΒ
**ν¨ν΄μ΄ λ§λ€μ΄μ§ λκΈ° **
β κΈ°μ‘΄ κ°μ²΄μ μ¬λ¬κ°μ§ κΈ°λ₯μ μΆκ°νκ³ μΆμ. κ·Έλ¬λ, ν΄λμ€ μμ μ¦κ°κ° λ¬Έμ μ.Β
β μλΈ ν΄λμ€ = is β a κ΄κ³
Text β RulerText β BorderedRulerText
β μμμ ν΅ν΄μ νμν κΈ°λ₯μ νμ₯ν΄ λκ°λ νν, νΉμ κΈ°λ₯μ μν΄ κ³μΈ΅μ΄ 볡μ‘ν΄μ§.Β
β λ€μ€ μμμ ν΅ν΄μ κ°λ¨ν κ³μΈ΅μ μλνμ§λ§,
Β λ€μ€μμμ ν΄λμ€μ μλ₯Ό μ€μ΄λκ² λ³΄λ€λ μμ κ΄κ³λ₯Ό λ°κΏμ€.Β
**λ°μ½λ μ΄ν° ν¨ν΄μ λͺ©νΒ **
1. μμ λμ μ‘°ν©μΌλ‘ μ΄ν리μΌμ΄μ
μ λμμ μ¬μ©μν νλ€.Β
2. λ°νμμ μ μ°μ± μ 곡, λ°νμ μνμμ κΈ°λ₯μ λμ μΌλ‘ μΆκ° λ° μ κ±° κ°λ₯
3. ν΄λμ€ λμ κ°κ°μ μΈμ€ν΄μ€μ κΈ°λ₯μ μΆκ°νλ€.Β
4. νμν ν΄λμ€μ μλ₯Ό μ€μ¬μ€λ€.
**ν¨ν΄μΌλ‘ λ¬Έμ ν΄κ²°**
β μ‘°ν©(Composition)μ Has β a κ΄κ³λ₯Ό μ μνλ€. λ°μ½λ μ΄ν° ν¨ν΄μ μ묡μ μΌλ‘ has-a κ΄κ³λ₯Ό μ¬μ©νλ€.Β
ex)Β
NSClipView μΈμ€ν΄μ€κ° μμ μ λνλ¨ΌνΈ λ·°λ₯Ό λ°μ½λ μ΄νΈνλ€.Β
= NSClipVIew μΈμ€ν΄μ€κ° λνλ¨ΌνΈ λ·°λ₯Ό μμ νλ€Β
β μ‘°ν©μ λ°νμμμ ꡬμ±λκ³ , λμ μΌλ‘ λ°κΏμ μλ€
*** NSScrollViewΒ
**β setDocumentView λ©μλλ₯Ό μ 곡ν΄μ λ΄μ₯λ ν΄λ¦½λ·°μ λνλ¨ΌνΈ λ·°λ₯Ό μ€μ νλλ‘ μ 곡Β
β λνλ¨ΌνΈ λ·°λ NSViewμ μλΈν΄λμ€λΌλ©΄ κ°λ₯ μ¦, μ¬μ©μ μ μμ 컀μ€ν
λ·°λ κ°λ₯νλ©°, μ«μ μ νμ΄ μλ€.Β
**μ½μ½μ μ¬μ© μμ **
μΌλ° μ μΈ λ°μ½λ μ΄ν° ν¨ν΄μ μ¬μ© μμ : [http://mrhook.co.kr/79](http://mrhook.co.kr/79)
β μ΄ ν¨ν΄μ μ£Όλ‘ MVCμ λ·° λ¨κ³ μμλ§ μ£Όλ‘ μ¬μ©λλ€.Β β μμΈλ μλ€.Β
**NSAttributedStringΒ
**β NSString + (ν°νΈ, λ¬Έλ¨ μ€νμΌ, μ΄λ―Έμ§ λ΄μ₯ λ±λ±) : μμ±μ λ°μ½λ μ΄νΈΒ
β μμ μ΄ κΎΈλ―Έλ λ¬Έμμ΄μ μμ νμ§ μλλ€. λ¨μ§, κ·Έ λ¬Έμμ΄κ³Ό μΆκ° μ 보λ§μ ν¨κ» μ μ₯ν¨.Β
*365p. ν23.1 μ€μν μ½μ½μ λ°μ½λ μ΄ν° ν΄λμ€Β *
**μ‘μΈμ리 λ·°Β **
β μ½μ½μ νμ€ μ¬μ©μ μΈν°νμ΄μ€ ν¨λ : μ¬μ©μκ° λ§λ λ°μ½λ μ΄ν° μΆκ° κ°λ₯νλ€.Β
**NSSavePanel, NSColorPanel λ±λ±**
**β** setAccessoryView λ©μλ μ 곡 : ν΄λΉ ν¨λμ μνλ μ‘μΈμ리뷰λ₯Ό νμ ν μ μμ. Β
β νμ€ ν¨λμ λ€μν ν¨λ ν΄λμ€λ₯Ό μλΈ ν΄λμ± νμ§ μμλ κΈ°λ₯μ μΆκ° ν μ μλ€Β
*** OS X 10.5 λΆν° NSPrintPanelκ³Ό NSPageLayout ν΄λμ€μ Β addAccessoryContoller λ©μλλ‘ μ‘μΈμ리뷰λ₯Ό κ΄λ¦¬ νλ μλ‘μ΄ λ°©μ μ 곡ν¨.Β **
β μ‘μΈμ리 λ·°λ₯Ό μ§μ μ¬μ©νλ κ²μμ μ‘μΈμ리 λ·° 컨νΈλ‘€λ¬λ₯Ό μ¬μ©νκ² λ³νΒ
β MVC ν¨ν΄μ μΌκ΄λ μ¬μ©μ μ₯λ €, μ‘μΈμ리 λ·°μ μ΄ν리μΌμ΄μ
λ‘μ§ μ¬μ΄μ μμΉν 컨νΈλ‘€λ¬ μ½λλ₯Ό μ΄λμ ꡬνν΄μΌ νλμ§ λͺ
νν ν¨.Β
**
ν¨ν΄ μ¬μ© κ²°κ³Ό **Β
β κ°μ²΄μ§ν₯μ μμκ΄κ³λ κ°λ ₯ κ·Έλ¬λ, μμ‘΄μ±μ μμΈμ.
β μ»΄νμΌμ μ μ μΌλ‘ μ€μ λκ³ , μλΈν΄λμ€μ λͺ¨λ μΈμ€ν΄μ€μ μν₯μ μ€λ€.
β μ»΄ν¬μ§μ
μ λ³΄λ€ μ μ°ν λμμ μ 곡ν¨.
β κ°μ²΄λ₯Ό λ°νμμ νμ₯νλκ²μ λ λμ μ΄κ³ , ν΄λμ€κ° μλ μΈμ€ν΄μ€ λ¨μ°μμμ μ μ©μ΄ κ°λ₯νλ€.
β λ€μμ ν΄λμ€ μ¬μ©μ νμ§ μκ³ λ λ μ»΄ν¬μ§μ
μΌλ‘ λ€μμ κΈ°λ₯μ μΆκ°νλ κ²μ΄ κ°λ₯νλ€.Β
β λ€λ₯Έ νλ μ μν¬ μμλ λ°μ½λ μ΄ν°κ° κΎΈλ―Έλ κ°μ²΄μ λμΌν μΈν°νμ΄μ€λ₯Ό κ°λλ‘ μꡬν¨.Β
β μ½μ½μμμλ μ μ½μ΄ μμ.Β
Β