J1Yun
ZU-TECHLOG
J1Yun
전체 방문자
였늘
μ–΄μ œ
  • πŸ“‘ Category (135)
    • Algorithm (61)
      • πŸ“š Concept (6)
      • πŸ“˜ Baekjoon Judge (53)
      • πŸ“— Programmers (2)
    • Computer Science (42)
      • πŸ”’ Operating System (14)
      • πŸ“‘ Network (15)
      • πŸ’Ύ Database (8)
      • 🧩 Design Pattern (4)
      • πŸ”‘ Security (1)
    • Activities (12)
      • 🦁 λ©‹μŸμ΄μ‚¬μžμ²˜λŸΌ 9κΈ° (6)
      • πŸ’» SWλ§ˆμ—μŠ€νŠΈλ‘œ 13κΈ° (6)
    • Infra (1)
      • ☁️ AWS (1)
    • Languages (1)
      • πŸ’™ Python (1)
    • Backend (7)
      • πŸ”΅ Django (4)
      • 🟒 Node.js (3)
    • Ect. (8)
      • πŸ’¬ Talk (0)
      • πŸ—‚οΈ 개발직ꡰ μ·¨μ—… μ€€λΉ„μžλ£Œ (8)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ
  • λ°©λͺ…둝

곡지사항

인기 κΈ€

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

250x250
hELLO Β· Designed By μ •μƒμš°.
J1Yun

ZU-TECHLOG

[λ””μžμΈνŒ¨ν„΄] Adapter νŒ¨ν„΄ - λ°”κΏ”μ„œ μž¬μ΄μš©ν•˜κΈ°
Computer Science/🧩 Design Pattern

[λ””μžμΈνŒ¨ν„΄] Adapter νŒ¨ν„΄ - λ°”κΏ”μ„œ μž¬μ΄μš©ν•˜κΈ°

728x90
β€» Java μ–Έμ–΄λ‘œ λ°°μš°λŠ” λ””μžμΈ νŒ¨ν„΄ μž…λ¬Έ(μ˜μ§„λ‹·μ»΄) λ„μ„œλ₯Ό λ°”νƒ•μœΌλ‘œ μž‘μ„±λœ λ‚΄μš©μž…λ‹ˆλ‹€.

 

Adapter(μ–΄λŒ‘ν„°) νŒ¨ν„΄ μ†Œκ°œ 

  •  μ§λ₯˜ 12볼트둜 μž‘λ™ν•˜λŠ” λ…ΈνŠΈλΆμ„ ꡐλ₯˜ 100볼트의 AC전원에 μ—°κ²°ν•  λ•Œ μ‚¬μš©ν•˜λŠ” AC μ–΄λŒ‘ν„°μ™€ 같은 κΈ°λŠ₯
  • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ‚¬μš©ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€κ°€ μ •μ˜λ˜μ–΄ μžˆλŠ”λ° 기쑴의 μ½”λ“œ(클래슀)κ°€ λΉ„μŠ·ν•œ κΈ°λŠ₯은 ν•˜μ§€λ§Œ μΈν„°νŽ˜μ΄μŠ€μ™€ λ‚΄μš©μ΄ λ‹€λ₯Ό λ–„ κΈ°μ‘΄ μ½”λ“œλ₯Ό μ •μ˜λœ μΈν„°νŽ˜μ΄μŠ€μ˜ κ΅¬ν˜„μ²΄λ‘œ λ°”κΏ”μ£ΌλŠ” νŒ¨ν„΄
  • AdapterλŠ” ν•œ 번 포μž₯ν•΄μ„œ λ‹€λ₯Έ μš©λ„λ‘œ μ‚¬μš©ν•  수 있게 κ΅ν™˜ν•΄μ£ΌλŠ” μ—­ν• 
  • 두 κ°€μ§€ μ’…λ₯˜λ‘œ κ΅¬ν˜„
    • ν΄λž˜μŠ€μ— μ˜ν•œ Adapter νŒ¨ν„΄ (상속을 μ‚¬μš©ν•œ Adapter νŒ¨ν„΄)
    • μΈμŠ€ν„΄μŠ€μ— μ˜ν•œ Adapter νŒ¨ν„΄ (μœ„μž„μ„ μ‚¬μš©ν•œ Adapter νŒ¨ν„΄)

ꡐ재 발췌

 

예제 ν”„λ‘œκ·Έλž¨ - JAVA

  • Banner(이미 μ£Όμ–΄μ§„ μ½”λ“œ)λ₯Ό Print(μƒˆλ‘œμš΄ μΈν„°νŽ˜μ΄μŠ€)에 λ§žμΆ”μ–΄ 개쑰

- Banner 클래슀 (Banner.java) 

  • Adaptee(κ°œμ‘°λ˜λŠ” μͺ½) μ—­ν• 
public class Banner {
  private String string;

  public Banner(String string) {
    this.string = string;
  }
  public void showWithParen() {
    System.out.println("(" + string + ")");
  }
  public void showWithAster() {
    System.out.println("*" + string + "*");
  }
}

 

- Print μΈν„°νŽ˜μ΄μŠ€ (Print.java)

  • Target(λŒ€μƒ) μ—­ν• 
// 상속을 μ‚¬μš©ν•œ Adapter νŒ¨ν„΄

public interface Print {
  public abstract void printWeak();
  public abstract void printStrong();
}
// μœ„μž„μ„ μ‚¬μš©ν•œ Adapter νŒ¨ν„΄

public abstract class Print {
  public abstract void printWeak();
  public abstract void printStrong();
}

 

- PrintBanner 클래슀 (PrintBanner.java)

  • Adapter μ—­ν• 
// 상속을 μ‚¬μš©ν•œ Adapter νŒ¨ν„΄

public class PrintBanner extends Banner implements Print {
  public PrintBanner(String string) {
    super(string);
  }
  public void printWeak() {
    showWithParen();
  }
  public void printStrong() {
    showWithAster();
  }
}
// μœ„μž„μ„ μ‚¬μš©ν•œ Adapter νŒ¨ν„΄

public class PrintBanner extends Print {
  private Banner banner;
  public PrintBanner(String string) {
    this.banner = new Banner(string);
  }
  public void printWeak() {
    banner.showWithParen();
  }
  public void printStrong() {
    banner.showWithAster();
  }
}

 

- Main 클래슀 (Main.java)

  • Client(의뒰자) μ—­ν•  
public class Main {
  public static void main(String[] args) {
    Print p = new PrintBanner("Hello");
    p.printWeak();
    p.printStrong();
  }
}

 

μž₯점과 단점

μž₯점

  • κΈ°μ‘΄ μ½”λ“œλ₯Ό λ³€κ²½ν•˜μ§€ μ•ŠλŠ”λ‹€. (즉, 이미 κ²€μ¦λ˜μ–΄ μžˆλŠ” κΈ°μ‘΄ μ½”λ“œ μž¬μ‚¬μš© κ°€λŠ₯)
  • κΈ°μ‘΄ μ½”λ“œμ˜ λ™μž‘κ³Ό νŠΉμ • μΈν„°νŽ˜μ΄μŠ€ κ΅¬ν˜„μ²΄λ‘œ λ³€ν™˜ν•˜λŠ” μž‘μ—…μ„ μ„œλ‘œ λ‹€λ₯Έ 클래슀둜 λΆ„λ¦¬ν•˜μ—¬ 관리 κ°€λŠ₯

단점

  • λ³€ν™˜μ„ μœ„ν•œ μƒˆλ‘œμš΄ 클래슀(ex. PrintBanner)λ₯Ό μ •μ˜ν•΄μ•Ό ν•˜λ―€λ‘œ λ³΅μž‘μ„±μ΄ 증가

 

 

728x90

'Computer Science > 🧩 Design Pattern' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[λ””μžμΈνŒ¨ν„΄] Factory Method νŒ¨ν„΄ - ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μΈμŠ€ν„΄μŠ€ μž‘μ„±ν•˜κΈ°  (0) 2022.09.06
[λ””μžμΈνŒ¨ν„΄] Template Method νŒ¨ν„΄ - ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ ꡬ체적으둜 μ²˜λ¦¬ν•˜κΈ°  (0) 2022.08.18
[λ””μžμΈνŒ¨ν„΄] Iterator νŒ¨ν„΄ - μˆœμ„œλŒ€λ‘œ μ§€μ •ν•΄μ„œ μ²˜λ¦¬ν•˜κΈ°  (0) 2022.08.17
    'Computer Science/🧩 Design Pattern' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ 글이닀
    • [λ””μžμΈνŒ¨ν„΄] Factory Method νŒ¨ν„΄ - ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μΈμŠ€ν„΄μŠ€ μž‘μ„±ν•˜κΈ°
    • [λ””μžμΈνŒ¨ν„΄] Template Method νŒ¨ν„΄ - ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ ꡬ체적으둜 μ²˜λ¦¬ν•˜κΈ°
    • [λ””μžμΈνŒ¨ν„΄] Iterator νŒ¨ν„΄ - μˆœμ„œλŒ€λ‘œ μ§€μ •ν•΄μ„œ μ²˜λ¦¬ν•˜κΈ°
    J1Yun
    J1Yun
    개발 κ΄€λ ¨ 기술 및 곡뢀 λ‚΄μš© 기둝μž₯

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”