
Computer Science/𧩠Design Pattern

[λμμΈν¨ν΄] Factory Method ν¨ν΄ - νμ ν΄λμ€μμ μΈμ€ν΄μ€ μμ±νκΈ°
β» Java μΈμ΄λ‘ λ°°μ°λ λμμΈ ν¨ν΄ μ λ¬Έ(μμ§λ·μ»΄) λμλ₯Ό λ°νμΌλ‘ μμ±λ λ΄μ©μ λλ€. Factory Method(νν 리 λ©μλ) ν¨ν΄ μκ° Template Method ν¨ν΄μ μΈμ€ν΄μ€ μμ±μ μΈ‘λ©΄μ μ μ©ν ν¨ν΄ μλμ Factory Method ν¨ν΄ ꡬ쑰μμλ Createsκ° Template Methodμ ν΄λΉ μΈμ€ν΄μ€λ₯Ό λ§λλ λ°©λ²μ μμ ν΄λμ€μμ κ²°μ νμ§λ§ ꡬ체μ μΈ ν΄λμ€ μ΄λ¦κΉμ§ κ²°μ νμ§ μμΌλ©° ꡬ체μ μΈ λ΄μ©μ λͺ¨λ νμ ν΄λμ€μμ μν μμ ν΄λμ€μμλ 곡μ (μ€κ³)λ§ μ μΈ, νμ ν΄λμ€μμ 곡μ μ ꡬ체μ μΈ λμμ ꡬν μμ νλ‘κ·Έλ¨ - IDμΉ΄λ 곡μ₯ - Product ν΄λμ€ (Product.java) μΆμ ν΄λμ€λ‘ ꡬνλ Product(μ ν)μ μν package framework; pub..

[λμμΈν¨ν΄] Template Method ν¨ν΄ - νμ ν΄λμ€μμ ꡬ체μ μΌλ‘ μ²λ¦¬νκΈ°
β» Java μΈμ΄λ‘ λ°°μ°λ λμμΈ ν¨ν΄ μ λ¬Έ(μμ§λ·μ»΄) λμλ₯Ό λ°νμΌλ‘ μμ±λ λ΄μ©μ λλ€. Template Method(ν νλ¦Ώ λ©μλ) ν¨ν΄ μκ° μμ ν΄λμ€μμ ν νλ¦Ώμ ν΄λΉνλ μΆμ λ©μλ μ μ, νμ ν΄λμ€μμ ν΄λΉ μΆμ λ©μλλ₯Ό μ€μ λ‘ κ΅¬ν μμ ν΄λμ€μμ λμ λ° λΌλλ₯Ό κ²°μ νκ³ , νμ ν΄λμ€μμ κ·Έ ꡬ체μ μΈ λ΄μ© κ²°μ νλλ‘ μ€κ³ν ν¨ν΄ κ°μ λμμ νκ±°λ κ°μ ꡬ쑰λ₯Ό κ°μ‘μ§λ§ μΌλΆ μ½λ(λ΄μ©)λ§ λ€λ₯Έ λ κ° μ΄μμ ν΄λμ€κ° μ‘΄μ¬ν λ μ μ© κ°λ₯ μμ νλ‘κ·Έλ¨ - JAVA - AbstractDisplay ν΄λμ€ (AbstractDisplay.java) AbstractClass(μΆμ ν΄λμ€) μν public abstract class AbstractDisplay { // μΆμ ν΄λμ€ Abstra..

[λμμΈν¨ν΄] Adapter ν¨ν΄ - λ°κΏμ μ¬μ΄μ©νκΈ°
β» Java μΈμ΄λ‘ λ°°μ°λ λμμΈ ν¨ν΄ μ λ¬Έ(μμ§λ·μ»΄) λμλ₯Ό λ°νμΌλ‘ μμ±λ λ΄μ©μ λλ€. Adapter(μ΄λν°) ν¨ν΄ μκ° μ§λ₯ 12λ³ΌνΈλ‘ μλνλ λ ΈνΈλΆμ κ΅λ₯ 100λ³ΌνΈμ ACμ μμ μ°κ²°ν λ μ¬μ©νλ AC μ΄λν°μ κ°μ κΈ°λ₯ ν΄λΌμ΄μΈνΈκ° μ¬μ©νλ μΈν°νμ΄μ€κ° μ μλμ΄ μλλ° κΈ°μ‘΄μ μ½λ(ν΄λμ€)κ° λΉμ·ν κΈ°λ₯μ νμ§λ§ μΈν°νμ΄μ€μ λ΄μ©μ΄ λ€λ₯Ό λ κΈ°μ‘΄ μ½λλ₯Ό μ μλ μΈν°νμ΄μ€μ ꡬνμ²΄λ‘ λ°κΏμ£Όλ ν¨ν΄ Adapterλ ν λ² ν¬μ₯ν΄μ λ€λ₯Έ μ©λλ‘ μ¬μ©ν μ μκ² κ΅νν΄μ£Όλ μν λ κ°μ§ μ’ λ₯λ‘ κ΅¬ν ν΄λμ€μ μν Adapter ν¨ν΄ (μμμ μ¬μ©ν Adapter ν¨ν΄) μΈμ€ν΄μ€μ μν Adapter ν¨ν΄ (μμμ μ¬μ©ν Adapter ν¨ν΄) μμ νλ‘κ·Έλ¨ - JAVA Banner(μ΄λ―Έ μ£Όμ΄μ§ μ½λ)..

[λμμΈν¨ν΄] Iterator ν¨ν΄ - μμλλ‘ μ§μ ν΄μ μ²λ¦¬νκΈ°
β» Java μΈμ΄λ‘ λ°°μ°λ λμμΈ ν¨ν΄ μ λ¬Έ(μμ§λ·μ»΄) λμλ₯Ό λ°νμΌλ‘ μμ±λ λ΄μ©μ λλ€. Iterator(μ΄ν°λ μ΄ν°/λ°λ³΅μ) ν¨ν΄ μκ° μ§ν© κ°μ²΄μ λ΄λΆ ꡬ쑰λ₯Ό λ ΈμΆμν€μ§ μκ³ λ°λ³΅νμ¬ μννλ λ°©λ²μ μ 곡ν ν¨ν΄ μμλλ‘ μ§μ νλ©΄μ μ 체λ₯Ό κ²μνλ μ²λ¦¬ μμ νλ‘κ·Έλ¨ - JAVA - Aggregate μΈν°νμ΄μ€ (Aggregate.java) μ§ν©μ²΄λ₯Ό λνλ΄λ μΈν°ν¨μ΄μ€ public interface Aggregate { public abstract Iterator iterator(); } - Iterator μΈν°νμ΄μ€ (Iterator.java) μμλ₯Ό μμλλ‘ κ²μν΄κ°λ μΈν°νμ΄μ€ public interface Iterator { public abstract boolean hasNext(); pub..