Search

์–ด๋Œ‘ํ„ฐ ํŒจํ„ด

์–ด๋Œ‘ํ„ฐ ํŒจํ„ด (Adapter Pattern)

์„œ๋กœ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ€์ง„ ํด๋ž˜์Šค๋“ค์ด ํ•จ๊ป˜ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค‘๊ฐ„์—์„œ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๋งˆ์น˜ 220V ์ฝ˜์„ผํŠธ๋ฅผ 110V๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ์–ด๋Œ‘ํ„ฐ์ฒ˜๋Ÿผ, ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋“ค์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๋ชฉ์ 

โ€ข
๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ํด๋ž˜์Šค๋“ค์„ ํ•จ๊ป˜ ๋™์ž‘ํ•˜๊ฒŒ ๋งŒ๋“ฆ
โ€ข
๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ์ƒˆ๋กœ์šด ์ฝ”๋“œ์™€ ํ†ตํ•ฉํ•  ๋•Œ ์œ ์šฉ
โ€ข
์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ ํ–ฅ์ƒ

ํŠน์ง•

โ€ข
ํด๋ž˜์Šค ์–ด๋Œ‘ํ„ฐ์™€ ๊ฐ์ฒด ์–ด๋Œ‘ํ„ฐ ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
โ€ข
๊ธฐ์กด ์‹œ์Šคํ…œ์˜ ์ˆ˜์ • ์—†์ด ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
โ€ข
๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)์„ ์ค€์ˆ˜ํ•˜์—ฌ ์ธํ„ฐํŽ˜์ด์Šค ๋ณ€ํ™˜ ๋กœ์ง์„ ๋ถ„๋ฆฌ

์˜ˆ์‹œ ์ฝ”๋“œ

// Target Interface interface MediaPlayer { void play(String filename); } // Adaptee class AdvancedMediaPlayer { void playMp4(String filename) { System.out.println("Playing mp4: " + filename); } } // Adapter class MediaAdapter implements MediaPlayer { private AdvancedMediaPlayer advancedPlayer; public MediaAdapter() { advancedPlayer = new AdvancedMediaPlayer(); } @Override public void play(String filename) { advancedPlayer.playMp4(filename); } }
Java
๋ณต์‚ฌ

์ฝ”๋“œ ์„ค๋ช…

์œ„ ์˜ˆ์ œ ์ฝ”๋“œ๋Š” ๋ฏธ๋””์–ด ํ”Œ๋ ˆ์ด์–ด์˜ ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด ๊ตฌํ˜„์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค:
โ€ข
MediaPlayer (Target Interface): ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์‚ฌ์šฉํ•  ์ผ๋ฐ˜์ ์ธ ๋ฏธ๋””์–ด ์žฌ์ƒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
โ€ข
AdvancedMediaPlayer (Adaptee): MP4 ํŒŒ์ผ์„ ์žฌ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ๊ธ‰ ๋ฏธ๋””์–ด ํ”Œ๋ ˆ์ด์–ด ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ์กด์— ์กด์žฌํ•˜๋Š” ํด๋ž˜์Šค๋กœ ์ง์ ‘์ ์œผ๋กœ MediaPlayer ์ธํ„ฐํŽ˜์ด์Šค์™€ ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
โ€ข
MediaAdapter (Adapter): MediaPlayer ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ๋‚ด๋ถ€์ ์œผ๋กœ AdvancedMediaPlayer๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ์ธํ„ฐํŽ˜์ด์Šค ๊ฐ„์˜ ๋ณ€ํ™˜์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
์ด ๊ตฌํ˜„์„ ํ†ตํ•ด ํด๋ผ์ด์–ธํŠธ๋Š” MediaPlayer ์ธํ„ฐํŽ˜์ด์Šค๋งŒ์„ ์•Œ๊ณ  ์žˆ์–ด๋„ AdvancedMediaPlayer์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์–ด๋Œ‘ํ„ฐ๋Š” play() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์„ ์ ์ ˆํ•œ playMp4() ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.