๋ฐ์ํ
Adapter
๐ก ‘์ด๋ฏธ ์ ๊ณต๋ ๊ฒ’๊ณผ ‘ํ์ํ ๊ฒ’ ์ฌ์ด์ ‘์ฐจ์ด’๋ฅผ ๋ฉ์ฐ๋ ๋์์ธ ํจํด
- Wrapper ํจํด์ด๋ผ๊ณ ๋ ๋ถ๋ฆผ
[์์ ] ์์์ ์ฌ์ฉํ ํจํด
- ํด๋์ค์ ์ํ Adapter ํจํด
Banner ํด๋์ค
- ๋ฏธ๋ฆฌ ์ ๊ณต๋๋ ํด๋์ค
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 ์ธํฐํ์ด์ค
- ํ์๋ก ํ๋ ์ธํฐํ์ด์ค
public interface Print {
public abstract void printWeak();
public abstract void printStrong();
}
PrintBanner ํด๋์ค
- Adapter
- ์ค๋น๋ Banner ํด๋์ค๋ฅผ ํ์ฅ(extends)ํ์ฌ Banner ํด๋์ค์ ๋ฉ์๋๋ฅผ ์์ ๋ฐ์ผ๋ฉฐ,
ํ์ํ Print ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํ(implements)ํ์ฌ Print ์ธํฐํ์ด์ค์ ๋ฉ์๋๋ฅผ ๊ตฌํ
public class PrintBanner extends Banner implements Print {
public PrintBanner(String string) {
super(string);
}
@Override
public void printWeak() {
showWithParen();
}
@Override
public void printString() {
showWithAster();
}
}
Main ํด๋์ค
- ์ด๋ํฐ PrintBanner ํด๋์ค๋ฅผ ์ด์ฉํด ๋ฌธ์์ด์ ํ์
public class Main {
public static void main(String[] args) {
Print p = new PrintBanner("Hello");
p.printWeak();
p.printStrong();
}
}
- PrintBanner์ ์ธ์คํด์ค๋ฅผ Print ์ธํฐํ์ด์คํ ๋ณ์์ ๋์
- Banner ํด๋์ค์ ์ฝ๋๋ฅผ ์จ๊น
- Print ์ธํฐํ์ด์ค์ ๋ฉ์๋๋ง ์ฌ์ฉํ๋ค๋ ์ ์ ๊ฐ์กฐ
- ํ๋ก๊ทธ๋๋จธ์ ์๋๊ฐ ๋ช ํํด์ง
- PrintBanner ํด๋์ค๊ฐ ์ด๋ป๊ฒ ๊ตฌํ๋์ด์๋์ง ๋ชจ๋ฆ → Main ํด๋์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ๋, PrintBanner ํด๋์ค์ ๊ตฌํ์ ๋ณ๊ฒฝ
Adapter ํจํด์ ๋ฑ์ฅ์ธ๋ฌผ
- `Target`(๋์): ์ง๊ธ ํ์ํ ๋ฉ์๋๋ฅผ ๊ฒฐ์
- `Client`(์๋ขฐ์): Target์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ผํจ (main ํด๋์ค)
- `Adaptee`(์ ์ ๋์์): ์ด๋ฏธ ์ค๋น๋ ๋ฉ์๋๋ฅผ ๊ฐ์ง
- `Adaptee`์ `Target`์ด ์ผ์นํ๋ค๋ฉด `Adapter`๊ฐ ๋ฑ์ฅํ์ง ์์๋ ๋จ
- `Adapter`(์ ์์) : Adaptee์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ Target์ ๋ง์กฑ์์ผ์ผ ํ๋ ์ญํ
- ํด๋์ค์ ์ํ Adapter ํจํด → ์์ํ์ฌ Adaptee ์ด์ฉ
- ์ธ์คํด์ค์ ์ํ Adapter ํจํด → ์์ํ์ฌ Adaptee ์ด์ฉ
์ด๋ค ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ผ๊น
- Adpater ํจํด์ ๊ธฐ์กด ๋์ํ๋ ํด๋์ค์ ํ๊ฒน ๋ง์์ ํ์ํ ํด๋์ค๋ฅผ ์์ฑ
- ํ์ํ ๋ฉ์๋๊ตฐ์ ๋น ๋ฅด๊ฒ ๋ง๋ค ์ ์์
- ๋ฒ๊ทธ ๋ฐ์ ์, (๊ธฐ์กด ํด๋์ค๋ ๋ฒ๊ทธ๊ฐ ์๋ ๊ฒ์ ์๊ณ ์์ผ๋ฏ๋ก) Adapter ํด๋์ค๋ง ์ค์ ์ ์ผ๋ก ์ดํด๋ณด๋ฉด ๋จ
→ ํ๋ก๊ทธ๋จ ๊ฒ์ฌ๊ฐ ํธํด์ง!
๐ ๋ฒ์ ์ ๊ณผ ํธํ์ฑ ๐
- Adapter ํจํด์ ์ ๋ฒ์ ๊ณผ ๊ตฌ๋ฒ์ ์ ๊ณต์กด ์ํค๊ณ , ์ ์ง๋ณด์ ํธ์๊น์ง ์ ๊ณต
- Adaptee: ์ ๋ฒ์ / Target: ๊ตฌ๋ฒ์
https://m.yes24.com/Goods/Detail/115576266
๋ฐ์ํ