๐์ด๋ํฐ ํจํด
ํด๋์ค๋ฅผ ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ์ค๊ฐ์์ ๋ณํ ์ญํ ์ ํด์ฃผ๋ ํด๋์ค๋ฅผ ์ด๋ํฐ ํจํด์ด๋ผ๊ณ ํ๋ค.
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 |