2μ₯
2μ₯μμ λ¬Έμ νΈμ§κΈ°(lexi)λ₯Ό μ€κ³νλ©° λ€μν λμμΈ ν¨ν΄μ μ¬μ©νλ λ°©λ²μ μ€λͺ νλ€.
1. λ¬Έμμ 물리μ ꡬ쑰λ₯Ό νννκΈ° μν 볡ν©μ²΄ ν¨ν΄
μꡬ μ¬ν
λ¬Έμμ κ·Έλν½μ λμΌνκ² λ€λ£¨μ΄μΌ νλ€. μλ‘λ₯Ό μλ‘μ νΉλ³ν κ²½μ°λ‘ μ²λ¦¬νλ€λ©΄, ν μ€νΈμ κ·Έλ¦Όμ λͺ¨λ μ²λ¦¬νλ λ°μ μμ μ΄ μ€λ³΅λλ€.
λ¨μΌ μμμ κ·Έλ£Ή μμλ₯Ό ꡬλΆν΄μ ꡬννλ©΄ μλλ€. μλ₯Ό λ€λ©΄, 2μ΄ 5λ²μ§Έ ν 10λ²μ§Έ μμκ° νλμ λ¬ΈμμΌ μλ μκ³ , μλ§μ νμ μμλ₯Ό κ°λ 볡μ‘ν λ€μ΄μ΄κ·Έλ¨μΌ μλ μλ€.
μ΄λ° κ²½μ° μ΄λ€ ν¨ν΄μ μ¬μ©ν΄μΌνλκ°? : 볡ν©μ²΄ ν¨ν΄(Composite pattern)
볡ν©μ²΄ ν¨ν΄μ΄λ?
λ³΅ν© κ°μ²΄ κ·Έλ£Ήκ³Ό λ¨μΌ κ°μ²΄λ₯Ό λμΌνκ² μ·¨κΈνκ±°λ λ€λ£° μ μκ² ν΄μ£Όλ λ°©μμΌλ‘, μ¬κ·μ ν©μ±μ νννλ ν¨ν΄μ΄λ€.
2. μλ‘ λ€λ₯Έ μμ μ€μ μκ³ λ¦¬μ¦μ μν μ λ΅ ν¨ν΄
μꡬ μ¬ν
λ¬Έμμ 물리μ ꡬ쑰λ₯Ό μ μ ν μμμ λ§μΆ° μ€μ ν΄μ€μΌ ν¨
μ΄ λ, 물리μ ꡬ쑰μ μμ μ€μ μκ³ λ¦¬μ¦μ λΆλ¦¬λμμ΄μΌ ν¨. μ¦, μμ μ€μ μκ³ λ¦¬μ¦μ λ°κΎΌλ€κ³ ν΄μ 물리μ κ΅¬μ‘°κ° λ³νλ©΄ μλλ©° μμ μ€μ μκ³ λ¦¬μ¦μ μ½κ² λ³κ²½ν μ μμ΄μΌ ν¨.
μ΄λ° κ²½μ° μ΄λ€ ν¨ν΄μ μ¬μ©ν΄μΌ νλκ°? : μ λ΅ ν¨ν΄(Strategy Pattern)
μ λ΅ ν¨ν΄μ΄λ?
μ€ν μ€μ μκ³ λ¦¬μ¦μ μ νν μ μκ² νλ λμμΈ ν¨ν΄.
μκ³ λ¦¬μ¦μ κ°μ²΄λ‘ μΊ‘μννλ κ²μ΄ μ λ΅ ν¨ν΄μ μλ.
μ λ΅κ³Ό λμ νκ²½μ λν μΈν°νμ΄μ€λ₯Ό μΆ©λΆν μΌλ°νν΄μΌν¨.
3. μ¬μ©μ μΈν°νμ΄μ€λ₯Ό κΎΈλ―ΈκΈ° μν μ₯μμ ν¨ν΄
μꡬ μ¬ν
κΈ°μ‘΄μ μ‘΄μ¬νλ κΈλ¦¬νμ μ₯μμ μ μ©ν΄μΌν¨ (boader, μ€ν¬λ‘€λ°)
μ΄λ° κ²½μ° μ΄λ€ ν¨ν΄μ μ¬μ©ν΄μΌ νλκ°? : λ°μ½λ¦¬μ΄ν° ν¨ν΄
λ°μ½λ μ΄ν° ν¨ν΄μ΄λ?
ν¬λͺ ν ν¬ν¨(transparent enclosure) κ°λ
λ¨μΌ μμμ κΈ°λ°μ λ ν©μ±κ³Ό, νΈνλλ μΈν°νμ΄μ€μ κ°λ μ μ‘°ν©ν κ²
λ§μ½ μ¬λ¬ κ°μ μ₯μμ μ μ©ν΄μΌ νλ€λ©΄: μ΄λ―Έ κ°κ³ μλ λ°μ½λ μ΄ν° ν΄λμ€λ₯Ό λμμ μ μ©νλ€.
4. μ¬λ¬ κ°μ 룩μ€ν νμ€μ μ§μνκΈ° μν μΆμ ν©ν 리 ν¨ν΄
μꡬ μ¬ν
μ¬λ¬ κ°μ κΈ°μ‘΄ 룩μ€ν νμ€μ λ°λ₯΄κ² λ§λλ λμμ μλ‘μ΄ νμ€μ΄ λμ¬ λλ§λ€ μΆκ°μ μΌλ‘ μ΄λ€μ μ½κ² μ§μνλ €κ³ ν¨.
λ°νμμλ 룩μ€νμ λ³κ²½ν μ μλ, μ΅κ³ μ μ μ°μ±μ μ§μνλ μ€κ³λ₯Ό λ§λ€μ΄μΌ ν¨
μ΄λ° κ²½μ° μ΄λ€ ν¨ν΄μ μ¬μ©ν΄μΌ νλκ°? : μΆμ ν©ν 리 ν¨ν΄
μΆμ ν©ν 리 ν¨ν΄μ΄λ?
ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μ§μ λ§λ€μ§ μκ³ κ΄λ ¨λ μ ν κ°μ²΄μ κ΅°μ μμ±νλ λ°©λ²μ μ μν¨.
guiFactory->CreateScrollbar();
MotifFactory, PMFactory, MacFactory λ±μ΄ μ€μ ꡬνμ λ§‘μ
μΆμ ν©ν 리 ν¨ν΄μ λμΌ κ³μ΄μ μ νκ΅°μ λ€λ£° μ μλ€λ μ μμ λ€λ₯Έ μμ± ν¨ν΄κ³Ό λ€λ¦
λ€λ₯Έ μμ± ν¨ν΄μ ν μ’ λ₯μ μ ν κ°μ²΄λ§ μλν μ μμ
μ¦, μΆμ ν©ν 리λ μ¬λ¬ κ°μ§ μ ν groupμ μμ±ν μ μκ² λμμ£Όλ ν¨ν΄(GUIFactory->MacFactory)
5. μ¬λ¬ κ°μ μλμ° νλ«νΌμ νμ©νκΈ° μν κ°κ΅ ν¨ν΄
μꡬ μ¬ν΄
μ¬λ¬ 룩μ€νμ μ§μνκΈ° μν΄ μ¬λ¬ μλμ° μμ€ν μμ μ€νλμ΄μΌ νλ μν©
μλμ°λ§λ€ μλ‘ λ€λ₯Έ μ¬λ¬ κ°μ ν΄λμ€ κ³μΈ΅μ κ°κ³ μκ³ , μ΄ κ³μΈ΅μ΄ μλ‘ νΈν κ°λ₯νλ€κ³ λ³Ό μ μκΈ°λλ¬Έμ μΆμ ν©ν 리 ν¨ν΄μ μ¬μ©ν μ μμ.
νλ μΌμ λΉμ·νμ§λ§ ꡬννλ λ°©λ²μ μμ ν λ€λ₯΄λ―λ‘, μλμ°κ° νλ μΌμ λν μΆμνμ μ΄λ₯Ό ꡬννλ λ°©λ²μ μΆμνλ₯Ό λΆλ¦¬ν΄μΌν¨.
μ΄λ° κ²½μ° μ΄λ€ ν¨ν΄μ μ¬μ©ν μ μλκ°? : κ°κ΅ ν¨ν΄ (Bridge Pattern)
κ°κ΅ ν¨ν΄μ΄λ?
μλ‘ λ 립μ μΌλ‘ νμ₯λμ§λ§ ν¨κ» λμν΄μΌ νλ κ°λ λ€μ λ³λμ ν΄λμ€ κ³μΈ΅μΌλ‘ λΆλ¦¬νλ κ²μ΄ κ°κ΅ ν¨ν΄μ λͺ©μ
Windosμ WindowsImp ν΄λμ€λ₯Ό λ°λ‘ λλ€. κ·Έλ¦¬κ³ WindowsImpμμ κΈ°λ₯μ ꡬνμ μ κ³ Windowsμμ νΈμΆνμ¬ μ¬μ©νλλ‘ νλ€.
μμ
λ Όλ¦¬μ κ°λ μ ν΄λΉνλ μλμ°,
κ·Έ μλμ°μ λν μλ‘ λ€λ₯Έ 물리μ ꡬν
μ΄ κ²½μ° κ°κ΅ ν¨ν΄μ μ μ©νλ©΄, μλμ° μμ€ν μ μ’ μμ μΈ κ΅¬νκ³Ό μ ν μκ΄μμ΄ λ Όλ¦¬μ μΈ μλμ° μΆμνλ₯Ό νμ₯ν μ μκ³ , μΆμμ κ°λ κ³Ό 무κ΄νκ² μλ‘μ΄ μλμ° μμ€ν μ ꡬνλ μΆκ°ν μ μλ€.
κ²°κ΅
6. μ·¨μ κ°λ₯ν μ¬μ©μ μ°μ°μ μν λͺ
λ Ή ν¨ν΄
μ¬μ©μ μ‘°μμ ꡬννλλ°, redoμ undo κΈ°λ₯μ μ 곡νκ³ μΆλ€.
λͺ¨λ μ‘°μλ€μ νμ₯μ± μκ² κ΅¬ννλ©΄μ redoμ undo κΈ°λ₯μ μ 곡ν΄μΌν¨.
μ΄λ° κ²½μ° μ΄λ€ ν¨ν΄μ μ¬μ©ν μ μλκ°? : Command Pattern
Command Patternμ΄λ?
μμ²μ μ΄λ»κ² μΊ‘μννλμ§ μ€λͺ νλ ν¨ν΄. μμ²μ λ°μμν€λ λ° νμν κ· μΌν μΈν°νμ΄μ€λ₯Ό κ·μ ν΄μ€
λͺ λ Ή ν¨ν΄μΌλ‘ λ§λ€μ΄μ§ μΈν°νμ΄μ€λ μμ² μ²λ¦¬μ ꡬν λ΄μ©μ μ¬μ©μμκ² μ¨κΉ.
μμ
Command ν΄λμ€λ₯Ό λ§λ€κ³ , μΈν°νμ΄μ€μ Execute()μ Unexecute()λ₯Ό μΆκ°νλ€.
μ¬λ¬ μ°μ°(ex: Paste Command)μ μλΈ ν΄λμ€λ‘ λ§λ€κ³ , Execute()μ Unexecute()λ₯Ό ꡬννλ€.
7. κ°μ²΄ ꡬ쑰λ₯Ό μ κ·Όνκ³ μννκΈ° μν λ°λ³΅μͺ γ
ν΄
8. λ¬Έμ ꡬ쑰μ ꡬνμ 볡μ‘νκ² νμ§ μκ³ λ€μμ λΆμ κΈ°λ₯μ μ 곡νκΈ° μν λ°©λ¬Έμ ν¨ν΄
Last updated