Adapter Pattern

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

ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋กœ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ๋“ค์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋Œ‘ํ„ฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด์ด๋ผ๊ณ  ํ•œ๋‹ค.

๊ตฌ์„ฑ

  • Client - Adaptee๋ฅผ ์ด์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋œปํ•œ๋‹ค.

  • Target - ์›๋ž˜๋ผ๋ฉด Adaptee์™€ ์ง์ ‘์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•˜๋‚˜ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋กœ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š๋Š” ์ƒ์œ„ ๊ฐœ๋…

  • Adapter - Target์„ ๊ตฌํ˜„ํ•˜๊ณ  Adaptee์˜ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๋Š” ์–ด๋Œ‘ํ„ฐ

  • Adaptee - ์ด์šฉํ•˜๊ณ ์ž ํ•˜๋Š” ํด๋ž˜์Šค. ๋ณดํ†ต ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋‚˜, ๋‚ด๋ถ€๋ฅผ ๊ฑด๋“œ๋ฆด ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ(์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ) ๋“ฑ์ด ์ด์— ํ•ด๋‹น

์ข…๋ฅ˜

  • Class Adapter

  • ์˜ค๋ธŒ์ ํŠธ ์–ด๋Œ‘ํ„ฐ

Class Adapter (ํด๋ž˜์Šค ์–ด๋Œ‘ํ„ฐ)

Class-Adapter

Adapter๊ฐ€ Adaptee๋ฅผ ์ƒ์†ํ•จ์œผ๋กœ์จ Adaptee์˜ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•œ๋‹ค.

Object Adapter (์˜ค๋ธŒ์ ํŠธ ์–ด๋Œ‘ํ„ฐ)

Object-Adapter

Adapter๊ฐ€ Adaptee๋ฅผ ์ฐธ์กฐํ•จ์œผ๋กœ์จ Adaptee์˜ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•œ๋‹ค.

Class Adapter vs Object Adapter

ํด๋ž˜์Šค ์–ด๋Œ‘ํ„ฐ์˜ ๊ฒฝ์šฐ ์ƒ์†์„ ํ†ตํ•ด Adaptee๋ฅผ ์ด์šฉํ•˜๋ฏ€๋กœ, ์ปดํŒŒ์ผ ํƒ€์ž„์— Adaptee๊ฐ€ ๊ฒฐ์ •๋œ๋‹ค.

๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Adaptee๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์— ๋ฌด๋ฆฌ๊ฐ€ ์žˆ๋‹ค.

๊ฐ์ฒด ์–ด๋Œ‘ํ„ฐ์˜ ๊ฒฝ์šฐ, Adaptee๋ฅผ ์ƒ์„ฑ์ž ๋“ฑ์— ์˜ํ•ด ์ฃผ์ž…๋ฐ›์•„ field์— ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์—, Adaptee๋ฅผ ๋™์ ์œผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ Adaptee๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, Adaptee์˜ ๊ฐœ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด ๊ฐ์ฒด ์–ด๋Œ‘ํ„ฐ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

Last updated