Adapter Pattern
Adapter Pattern (์ด๋ํฐ ํจํด)
ํธํ์ฑ ๋ฌธ์ ๋ก ํจ๊ป ์ฌ์ฉํ ์ ์๋ ๊ฒ๋ค์ ํจ๊ป ์ฌ์ฉํ๊ธฐ ์ํด ์ด๋ํฐ๋ฅผ ์ ์ํ๋ ๊ฒ์ ์ด๋ํฐ ํจํด์ด๋ผ๊ณ ํ๋ค.
Client - Adaptee๋ฅผ ์ด์ฉํ๊ณ ์ ํ๋ ๊ฐ์ฒด๋ฅผ ๋ปํ๋ค.
Target - ์๋๋ผ๋ฉด Adaptee์ ์ง์ ์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด์ผ ํ๋ ํธํ์ฑ ๋ฌธ์ ๋ก ์ฐ๊ฒฐ๋์ง ์๋ ์์ ๊ฐ๋
Adapter - Target์ ๊ตฌํํ๊ณ Adaptee์ ๊ธฐ๋ฅ์ ์ด์ฉํ๋ ์ด๋ํฐ
Adaptee - ์ด์ฉํ๊ณ ์ ํ๋ ํด๋์ค. ๋ณดํต ๋ ๊ฑฐ์ ์ฝ๋๋, ๋ด๋ถ๋ฅผ ๊ฑด๋๋ฆด ์ ์๋ ๊ฒฝ์ฐ(์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ) ๋ฑ์ด ์ด์ ํด๋น
Class Adapter (ํด๋์ค ์ด๋ํฐ)
Adapter๊ฐ Adaptee๋ฅผ ์์ํจ์ผ๋ก์จ Adaptee์ ๊ธฐ๋ฅ์ ํธ์ถํ๋ค.
Object Adapter (์ค๋ธ์ ํธ ์ด๋ํฐ)
Adapter๊ฐ Adaptee๋ฅผ ์ฐธ์กฐํจ์ผ๋ก์จ Adaptee์ ๊ธฐ๋ฅ์ ํธ์ถํ๋ค.
Class Adapter vs Object Adapter
ํด๋์ค ์ด๋ํฐ์ ๊ฒฝ์ฐ ์์์ ํตํด Adaptee๋ฅผ ์ด์ฉํ๋ฏ๋ก, ์ปดํ์ผ ํ์์ Adaptee๊ฐ ๊ฒฐ์ ๋๋ค.
๋ฐ๋ผ์ ์ฌ๋ฌ ๊ฐ์ Adaptee๋ฅผ ์ฌ์ฉํ๋ ๋ฐ์ ๋ฌด๋ฆฌ๊ฐ ์๋ค.
๊ฐ์ฒด ์ด๋ํฐ์ ๊ฒฝ์ฐ, Adaptee๋ฅผ ์์ฑ์ ๋ฑ์ ์ํด ์ฃผ์
๋ฐ์ field์ ์ ์ฅํ๊ธฐ ๋๋ฌธ์, Adaptee๋ฅผ ๋์ ์ผ๋ก ๊ต์ฒดํ ์ ์๋ค. ๋ฐ๋ผ์ ์ฌ๋ฌ ๊ฐ์ Adaptee๋ฅผ ์ด์ฉํ ์ ์์ผ๋ฏ๋ก, Adaptee์ ๊ฐ์๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ๊ฐ์ฒด ์ด๋ํฐ๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ข๋ค.