Adapter Pattern
**Structural Pattern**
ํ๋ก๊ทธ๋จ ๊ตฌ์กฐ์ ๊ด๋ จ๋ ํจํด๋ค
ํ๋ก๊ทธ๋จ ๋ด์ ์๋ฃ๊ตฌ์กฐ๋ ์ธํฐํ์ด์ค ๊ตฌ์กฐ ๋ฑ ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋๋ฐ ํ์ฉํ ์ ์๋ ํจํด๋ค
์ด๋ํฐ ํจํด์ด๋?
ํ ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉํ๊ณ ์ํ๋ ๋ค๋ฅธ ์ธํฐํ์ด์ค๋ก ๋ณํํ๋ค.
์ด๋ํฐ๋ฅผ ์ด์ฉํ๋ฉด ์ธํฐํ์ด์ค ํธํ์ฑ ๋ฌธ์ ๋๋ฌธ์ ๊ฐ์ด ์ธ ์ ์๋ ํด๋์ค๋ค์ ์ฐ๊ฒฐํด์ ์ธ ์ ์๋ค.
์ด๋ํฐ ํจํด ํธ์ถ ๊ณผ์
ํด๋ผ์ด์ธํธ์์๋ Target Interface ๋ฅผ ํธ์ถํ๋ ๊ฒ ์ฒ๋ผ ๋ณด์ธ๋ค. ํ์ง๋ง ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ ๋ฌ๋ฐ์ (Target Interface ๋ฅผ ๊ตฌํํ) Adapter ๋ ์์ ์ด ๊ฐ์ธ๊ณ ์๋ Adaptee ์๊ฒ ์ค์ง์ ์ธ ์ฒ๋ฆฌ๋ฅผ ์์ํ๋ค. Adapter ๊ฐ Adaptee ๋ฅผ ๊ฐ์ธ๊ณ ์๋ ๊ฒ ๋๋ฌธ์ Wrapper ํจํด์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
ใ
์ ์ด์ ๋๊ฐ์ ์ธํฐํ์ด์ค๊ฐ ๋ฌ๋ผ์ ํธํ์ด ์๋๋ค๋ฉด, ํ๋๋ฅผ ๋ฐ๊ฟ์ ๋๊ฒ ํ๋์ง, ์๋๋ฉด ๋๋ค ๋ฐ๊พธ๋ฉด ๋์ง ์๋?
์์ ์์๋ ์ดํด๋ฅผ ๋๊ธฐ์ํด AirConditioner, Cleaner, HairDryer๋ค์ ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ง๋ ์์๊ณ ํด๋์ค ๋ด๋ถ๋ ํคํ ๋ค์ฌ๋ค ๋ณผ ์ ์๋ค. ํ์ง๋ง, ์ด ํด๋์ค๋ค์ด ์คํ์์ค๊ฐ ์๋๋ผ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํด๋์ค ๋ฐ์ด๋๋ฆฌ ํ์ผ๋ง์ ์ ๊ณต๋ฐ์ ์จ๋ํํฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๋ฉด ์ง์ ์ ์ธ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅ ํ ์ ์๋ค. ์ง์ ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋ ๊ฒฝ์ฐ๋ผ ํ๋๋ผ๋ Adaptee ์ชฝ์์ ์ฐ๋ฆฌ๊ฐ ๋ณ๊ฒฝํ ์ฝ๋๋ก ์ธํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฒค๋์ชฝ ์์คํ ์ ์ฒด๊ฐ ๊นจ์ง ์๋ ์๋ค.
ใ
๊ทธ๋ฌ๋ฉด ์ฐ๋ฆฌ์ชฝ ์ธํฐํ์ด์ค๋ฅผ ์์ ํ๋ฉด ๋์ง ์๋?
๊ฐ๋ฅํ ์ ์๋ค. ํ์ง๋ง ๋ฐ๊พธ๋ ค๋ ์ฐ๋ฆฌ์ชฝ ์ธํฐํ์ด์ค๋ฅผ ์ฐ๋ฆฌ ์์คํ ์ ๋ค๋ฅธ ์ด๋๊ฐ์์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด? ๊ทธ ๋ถ๋ถ๋ ์์ ํด์ค์ผ ํ๋ค. ์ฐ๋ฆฌ์ชฝ ์ธํฐํ์ด์ค๋ฅผ ์์ ํ๊ณ , ์ด์ ์ํฅ์ ๋ฐ๋ ๋ถ๋ถ๋ค์ ์์ ํ๋ค๊ฐ ์๊ธฐ์น ๋ชปํ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ํฌ๋ค.
ใ