πCertificate/Engineer Information Processing
[μ 보μ²λ¦¬κΈ°μ¬(μ€κΈ°)] λμμΈ ν¨ν΄ - [νμ ν¨ν΄]
Sun A
2024. 10. 1. 10:23
λμμΈ ν¨ν΄μ΄λ?
GoF(Gang of Four)μ΄ μ²μ μ μνμ¬ κ΅¬μ²΄νλ κ²
- μλΈμμ€ν μ μνλ μ»΄ν¬λνΈλ€κ³Ό κ·Έ κ΄κ³λ₯Ό μ€κ³νκΈ° μν μ°Έμ‘° λͺ¨λΈ
- κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° μ€κ³ μ μμ£Ό λ°μνλ λ¬Έμ μ λν λ°λ³΅μ ν΄κ²° λ°©λ²
- cf) μν€ν μ² ν¨ν΄ : μ 체 μμ€ν μ ꡬ쑰λ₯Ό μ€κ³
νμ ν¨ν΄μ΄λ?
κ°μ²΄ κ°μ μνΈμμ©μ μ€μ¬μΌλ‘ μ€κ³λλ©°, κ°μ²΄λ€ κ°μ μν , μ± μ λ° νλμ λν ν¨ν΄μ μ 곡νλ€.
μ΄λ¬ν ν¨ν΄μ μ ν리μΌμ΄μ μ νμλ₯Ό ꡬ쑰ννκ³ κ΄λ¦¬νλ λ° λμμ΄ λλ€.
Chain of Responsibility μ± μ μ¬μ¬ |
- ν΄λΌμ΄μΈνΈμ μμ²μ λν μΈμΈν μ²λ¦¬λ₯Ό νλμ κ°μ²΄κ° λͺ½λ
νλ κ²μ΄ μλ, μ¬λ¬ κ°μ μ²λ¦¬ κ°μ²΄λ€λ‘ λλκ³ , μ΄λ€μ μ¬μ¬μ²λΌ μ°κ²°ν΄ μ§ν© μμμ μ°μμ μΌλ‘ μ²λ¦¬νλ νλ ν¨ν΄μ μλ―Έ - μ²λ¦¬ κ°λ₯ν κ°μ²΄κ° λ μ΄μ μ‘΄μ¬νμ¬ ν κ°μ²΄ λ΄ μ²λ¦¬ λΆκ° μ λ€μ κ°μ²΄λ‘ μ΄κ΄ - μμ²μ μ²λ¦¬νλ κ°μ²΄λ€μ μ²΄μΈ ννλ‘ μ°κ²°νμ¬ μμ²μ μμλλ‘ μ λ¬ - κ°μ²΄λ μμ²μ μ²λ¦¬ν μ μλ μ§ νλ¨νκ³ , μ²λ¦¬ν μ μμΌλ©΄ λ€μ κ°μ²΄λ‘ μ λ¬ - κ°λ°ν λ, μ μ μΌλ‘ κΈ°λ₯μ νλ μ½λ©νλ©΄ κΈ°λ₯ μ²λ¦¬ μ°κ²° μμ μ΄ λΆκ°ν¨ => ν μμ²μ 2κ° μ΄μμ κ°μ²΄μμ μ²λ¦¬ |
2κ° μ΄μμ κ°μ²΄ |
Command 컀맨λ |
Command λ» : n. λͺ λ Ή, v. λͺ λ Ήνλ€, v. μ§μνλ€ - μμ² λͺ λ Ήμ΄λ€μ μΆμ/ꡬ체 ν΄λμ€λ‘ λΆλ¦¬ ν λ¨μν/μΊ‘μν - μμ²μ κ°μ²΄λ‘ μΊ‘μννμ¬ μμ²μμ μ²λ¦¬μλ₯Ό λΆλ¦¬ - λͺ λ Ή, μμ²μ, ν΄λΌμ΄μΈνΈ, μμ μλ‘ κ΅¬λΆ - μ€νκΈ°λ₯μ μΊ‘μν -> μ£Όμ΄μ§ μ¬λ¬ κΈ°λ₯μ μ€ν - μ¬μ¬μ©μ±μ΄ λμ - μΆμ ν΄λμ€μ λ©μλλ₯Ό λ§λ€μ΄λκ³ κ° λͺ λ Ήμ λ°λΌ μλΈ ν΄λμ€λ₯Ό μ νλμ΄ μ€νλ¨ |
μμ²μ, μ²λ¦¬μ |
Interpreter μΈν°νλ¦¬ν° |
Interpreter λ» : n. ν΅μμ¬, n. ν΄μ νλ‘κ·Έλ¨ - μΈμ΄μ λ¬Έλ² νν μ μ - λ¬Έλ² κ·μΉμ κΈ°λ°μΌλ‘ λ¬Έμ₯μ ν΄μ - νλ‘κ·Έλλ° μΈμ΄μ λ¬Έλ²μ ν΄μ - ν΄μμ ν΄λμ€λ₯Ό μμ±νκΈ° λλ¬Έμ μ¬λ¬ ννμ μΈμ΄ ꡬ문μ ν΄μ - λ¬Έλ² μ체λ₯Ό μΊ‘μννμ¬ μ¬μ© |
μΈμ΄ ꡬ문, ν΄μ, μΊ‘μν |
Iterator μ΄νΈλ μ΄ν° |
Iterator λ» : λ°λ³΅μ - μ κ·Όμ΄ λΉλ²ν κ°μ²΄μ λν΄ λμΌ μΈν°νμ΄μ€ μ¬μ© - μμλ€μ μμ°¨μ μΌλ‘ μ κ·Όνκ³ μ²λ¦¬ν μ μμ - λ΄λΆ ꡬ쑰λ₯Ό λ ΈμΆνμ§ μκ³ λ³΅μ‘ν κ°μ²΄λ€μ μμλ€μ μμ°¨μ μΌλ‘ μ κ·Ό κ°λ₯νκ² ν΄μ£Όλ νμ ν¨ν΄ - λͺ¨λ νλͺ©μ μ κ·Όνλ λ°©λ² |
λ°λ³΅ |
Mediator λ©λμμ΄ν° |
Mediator λ» : μ€μ¬μΈ, μ‘°μ κ΄ - κ°μ²΄λ€ κ° λ³΅μ‘ν μνΈμμ©μ μΊ‘μννμ¬ κ°μ²΄λ‘ μ μ ν μ€μ¬ - μ¬λ¬ κ°μ²΄ κ°μ μνΈμμ©μ μ€μμ§μ€μ μΌλ‘ κ΄λ¦¬ - κ°μ²΄ κ°μ ν΅μ μ μ§μμ μν μ νλ μ€μ¬μλ₯Ό λμ΄ κ°μ²΄μ§ν₯μ λͺ©νλ₯Ό λ¬μ± - κ°μ²΄ μκ° λ§μ 볡μ‘ν΄μ§ μνλ₯Ό κ°μ - μ€μ¬μκ° ν΅μ λΉλλ₯Ό μ€μ - μνΈμμ©μ μ μ°ν λ³κ²½μ μ§μ |
μ€μ¬μ, μ€κ°μμ ν΅μ , μνΈμμ© |
Memento κΈ°λ ν |
Memento λ» : (μ¬λ, μ₯μλ₯Ό κΈ°μ΅νκΈ° μν) κΈ°λ ν - κ°μ²΄λ€ μ΄μ μ νΉμ μμ μ μνλ‘ μ μ₯νκ³ λ³΅μ (μΊ‘μν μ μ§) - κ°μ²΄μ μ΄μ μνλ₯Ό μ μ₯νκ³ λ³΅μν μ μλλ‘ ν¨ - ν΄λμ€ μ€κ³ κ΄μ κ°μ²΄ μ 보λ₯Ό μ μ₯ν νμκ° μμ λ μ μ© - μμ μ·¨μ(undo) κΈ°λ₯μ κ°λ°ν λ νμν ν¨ν΄ |
μ μ₯νκ³ λ³΅μ, ν΄λμ€ κ΄μ , Undo |
Observer μ΅μ λ² |
Observer λ» : 보λ μ¬λ, λͺ©κ²©μ, κ΄μ°°μ, κ΄μΈ‘μ - ν κ°μ²΄ μν λ³ν μ μμλμ΄ μλ κ°μ²΄λ€μ λ³ν μ λ¬ - κ°μ²΄μ μν λ³νλ₯Ό κ΄μ°°νκ³ μΆμ λ€λ₯Έ κ°μ²΄λ€μκ² μλμΌλ‘ μλ¦Ό - μΌλλ€μ κ°μ²΄ μμ‘΄ κ΄κ³λ₯Ό μ μ - ν κ°μ²΄μ μνκ° λ³νλμμ λ, μμ‘΄κ΄κ³μ μλ λ€λ₯Έ κ°μ²΄λ€μκ² μλμ μΌλ‘ λ³ν ν΅μ§ - ν κ°μ²΄μ μνκ° λ°λλ μ§ μΌννλ€κ°, λ°λλ©΄ κ·Έ κ°μ²΄μ μμ‘΄νλ κ°μ²΄λ€μκ² μ°λ½ - μλμΌλ‘ λ΄μ©μ΄ κ°±μ λλ λ°©λ² |
μ°λ½, κ°±μ |
State μ€ν μ΄νΈ |
State λ» : μν - κ°μ²΄μ μνμ λ°λΌ λμΌν λμμΌλ‘ λ€λ₯΄κ² μ²λ¦¬ - κ°μ²΄ λ΄λΆ μνμ λ°λΌ κ°μ²΄μ λμμ λ³κ²½ - κ°μ²΄μ μνλ₯Ό μΊ‘μν - μΊ‘μνν μνλ₯Ό μ°Έμ‘°νκ² ν¨ - μνμ λ°λΌ λ€λ₯΄κ² μ²λ¦¬ν μ μλλ‘ νμ λ΄μ©μ λ³κ²½ |
μν μΊ‘μν |
Strategy μ€νΈλ μ΄νΈμ§ |
Strategy λ» : κ³ν, μ λ΅, μ립 - λμΌ κ³μ΄ μκ³ λ¦¬μ¦μ κ°λ³μ μΌλ‘ μΊ‘μννμ¬ μνΈ κ΅ν - μκ³ λ¦¬μ¦ κ΅°μ μ μνκ³ κ°μ μκ³ λ¦¬μ¦μ κ°κ° νλμ ν΄λμ€μ μΊ‘μν νμν λ μλ‘ κ΅νν΄μ μ¬μ©ν μ μκ² νλ ν¨ν΄ - λμ μΌλ‘ νμλ₯Ό μμ λ‘κ² λ°κΏ μ μλ ν¨ν΄ - νμ κ°μ²΄λ₯Ό μΊ‘μννμ¬ λμ μΌλ‘ νμλ₯Ό μμ λ‘κ² λ³ν |
μκ³ λ¦¬μ¦κ΅° |
Template Method ν νλ¦Ώ λ©μλ |
- μμ ν΄λμ€μμλ μΆμμ μΌλ‘ νννκ³ κ΅¬μ²΄μ μΈ λ΄μ©μ νμ ν΄λμ€μμ κ²°μ - μ¬λ¬ ν΄λμ€μμ κ³΅ν΅ μ¬μ© λ©μλλ₯Ό μμ ν΄λμ€μμ μ μνκ³ , νμ ν΄λμ€λ§λ€ λ€λ₯΄κ² ꡬνν΄μΌνλ μΈλΆ μ¬νμ κ°λ³ ꡬν - μκ³ λ¦¬μ¦μ ν΅μ¬μ μΈ κ³¨κ²©μ κ·Έλλ‘ μ μ§ / μΌλΆ λ¨κ³λ νμ ν΄λμ€μμ ꡬ체μ μΌλ‘ ꡬν - μ½λμ μμ μ€μ΄κ³ μ μ§λ³΄μλ₯Ό μ©μ΄νκ² νλ ν¨ν΄ - μ΄λ€ μ²λ¦¬λ₯Ό νλ μΌλΆλΆμ μλΈ ν΄λμ€λ‘ μΊ‘μν - μ 체 μννλ κ³Όμ μ λ°κΎΈμ§ μμ * μμ±μ Factory Methodμ ν·κ°λ¦¬μ§ λ§ κ² |
μκ³ λ¦¬μ¦, μλΈ ν΄λμ€, μΊ‘μν, μΆμ-골격, νμ-μΈλΆμ²λ¦¬ |
Visitor λΉμν° |
Visitor λ» : λ°©λ¬Έκ°, μλ - κ° ν΄λμ€ λ°μ΄ν° ꡬ쑰λ‘λΆν° μ²λ¦¬/μ°μ° κΈ°λ₯μ λΆλ¦¬νμ¬ λ³λμ ν΄λμ€λ₯Ό λ§λ€κ³ , ν΄λΉ ν΄λμ€ λ©μλκ° κ° ν΄λμ€λ₯Ό λμλ€λλ©° νΉμ μμ μ μν => κ°μ²΄ ꡬ쑰 λ³κ²½ X / μλ‘μ΄ μ°μ° κΈ°λ₯λ§ μΆκ° - κ°μ²΄ ꡬ쑰λ₯Ό λ³κ²½νμ§ μκ³ κ°μ²΄μ μλ‘μ΄ μ°μ° μΆκ° - λ°μ΄ν° ꡬ쑰μμ μ²λ¦¬ κΈ°λ₯μ λΆλ¦¬ - λΆλ¦¬ν μ²λ¦¬ κΈ°λ₯μ λ³λμ ν΄λμ€λ‘ λ§λ€μ΄λ - μ΄ ν΄λμ€μ λ©μλκ° κ° ν΄λμ€λ₯Ό λμλ€λλ©΄μ νΉμ μμ μ μν - κ°μ²΄μ ꡬ쑰λ λ³κ²½νμ§ μμΌλ©΄μ κΈ°λ₯λ§ λ°λ‘ μνν μ μμ |
μλ‘μ΄ μ°μ° μΆκ°, λμλ€λ, κΈ°λ₯λ§ μν |