728x90
Computer Science/🧩 Design Pattern

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..

728x90