πμ΄λν° ν¨ν΄
ν΄λμ€λ₯Ό λ°λ‘ μ¬μ©ν μ μλ κ²½μ°κ° μλλ° μ€κ°μμ λ³ν μν μ ν΄μ£Όλ ν΄λμ€λ₯Ό μ΄λν° ν¨ν΄μ΄λΌκ³ νλ€.
EX)
C νμ λ§ μ§μνλ λ§₯λΆμ USB ν¬νΈλ₯Ό μ¬μ©νλ €κ³ νλ€λ©΄ USBμ Cνμ μ νΈνν μ μλ μ΄λν°κ° νμνλ€.
μ΄λν°λ₯Ό ν΅ν΄ μ΄λ ν USB ν¬νΈλ₯Ό κ°μ Έμλ Cνμ μ λ§₯λΆμμ μ¬μ©μ΄ κ°λ₯νλ€.
μ΄μ²λΌ μ€κ°μμ νμλ‘ νλ μΈν°νμ΄μ€λ‘ λ³νν΄μ£Όμ΄ ν¨κ» λμν μ μλ ν΄λμ€λ€μ΄ ν¨κ» λμν μ μλλ‘ ν΄μ£Όλ ν¨ν΄μ΄λ€.
μ½λλ‘ μ΄λν° ν¨ν΄ μ΄ν΄νκΈ°
public interface Duck {
public void quack();
public void fly();
}
public interface Turkey {
public void gobble();
public void fly();
}
public class WildTurkey implements Turkey {
@Override
public void gobble() {
System.out.println("gobble");
}
@Override
public void fly() {
System.out.println("fly");
}
}
public class TurkeyAdapter implements Duck {
Turkey turkey;
public TurkeyAdapter(Turkey turkey) {
this.turkey = turkey;
}
@Override
public void quack() {
turkey.gobble();
}
@Override
public void fly() {
turkey.fly();
}
}
- Duck λμ Turkey κ°μ²΄λ₯Ό μ¬μ©ν΄μΌ ν λ μΈν°νμ΄μ€κ° λ€λ₯΄κΈ° λλ¬Έμ Turkey κ°μ²΄λ₯Ό λ°λ‘ μ¬μ©ν μ μλ€. λ°λΌμ μ΄λν°λ₯Ό μμ±νμ¬ μ¬μ©νλλ‘ νλ€.
WildTurkey turkey = new WildTurkey();
Duck turkeyAdapter = new TurkeyAdapter(turkey);
testDuck(turkeyAdapter);
public static void testDuck(Duck duck) {
duck.quack();
duck.fly();
}
- testDuck ν¨μλ₯Ό νΈμΆν λ turkey κ°μ²΄ κ·Έλλ‘ νΈμΆνλ κ²μ λΆκ°λ₯νλ€. turkey κ°μ²΄λ₯Ό μ¬μ©νμ¬ testDuck ν¨μλ₯Ό νΈμΆνκΈ° μν΄ μ€κ°μ TurkeyAdapterλ₯Ό μ¬μ©νμλ€.
λ§λ¬΄λ¦¬
μ΄λν° ν¨ν΄μ μ½λ λ³κ²½μ΄ μ΄λ €μ΄ ν΄λμ€λ₯Ό μνλ ννλ‘ μ¬μ©νκ³ μ ν λ μ μ©ν μ μλ€.
ν΄λμ€μ μ½λλ₯Ό λ³κ²½νκΈ° μ΄λ €μ΄ κ²½μ°
- μ΄λ―Έ λ§μ νλ‘κ·Έλ¨μμ μ¬μ©λλ κ³΅μ© μ½λμ κ²½μ°
- μ΄λ€ ν΄λμ€κ° λ²μ μ λ κ²½μ° νμ λ²μ μ ν΄λμ€μλ μ§μν΄μΌ νλ κ²½μ°
tech-interview-for-developer/Design Pattern/Adapter Pattern.md at master · gyoogle/tech-interview-for-developer
πΆπ» μ μ κ°λ°μ μ 곡 μ§μ & κΈ°μ λ©΄μ λ°±κ³Όμ¬μ π. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.
github.com
[λμμΈ ν¨ν΄] - 01. μ΄λν°(Adapter) ν¨ν΄
μννΈμ¨μ΄ κ°λ°μ μ¬μ©μμ μꡬμ¬ν λΆμ μ€κ³ ꡬν ν μ€νΈ λ°°ν¬ μμ κ³Όμ μ κ³μ λ°λ³΅νκ² λλ€.κ·Έλ¦¬κ³ μ΄ λ€μ―κ°μ§μ νλͺ© μ€μμ μ€κ³λ₯Ό μ¬λ°λ₯΄κ³ ν¨κ³Όμ μΌλ‘ νκΈ° μν΄μλ λμμΈ ν¨ν΄
velog.io
'CS' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
OAuth 2.0 κ°λ κ³Ό λμ κ³Όμ μ 리 (0) | 2025.01.31 |
---|---|
Web Serverμ WASμ μ°¨μ΄ (2) | 2024.11.24 |
νλ‘μ μλ²(Proxy server) (0) | 2024.11.18 |
μ€μμ²λ¦¬μ₯μΉ(CPU) μλ μ리 (1) | 2024.11.17 |
κ΅μ°©μν (0) | 2024.11.16 |