GoF์ ๋์์ธ ํจํด, ์ ์์ ํจํด์ ๋ํด ์์๋ณธ๋ค.
ํด๋น ๊ธ์, ๋ค์์ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ดํดํ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค.
ํต์ฌ ์์ฝ
- ์ผ์์์์ ์ฌ์ฉํ๋ Adapter์ฒ๋ผ, ํน์ ์ธํฐํ์ด์ค๋ฅผ ์ํ๋ ์ธํฐํ์ด์ค๋ก ๋ณ๊ฒฝํด์ฃผ๋ ์ญํ ์ ํจ
- ์ด์ ํด๋์ค์ interface๋ฅผ ๊ทธ๋๋ก ๋ ์ฑ๋ก, ๋ณํํ์ฌ ๋ค๋ฅธ ์ชฝ์์๋ ์ธํฐํ์ด์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์ฌ์ฉํ ์ ์์
- ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉ์๊ฐ ๊ธฐ๋ํ๋ ์ธํฐํ์ด์ค ํํ๋ก ์ ์์ํด
- ์๋ก ์ผ์นํ์ง ์๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋ ํด๋์ค๋ฅผ ํจ๊ป ๋์์ํด
์์
- ์ฌ์ฉ์๋ ๋ฐ๋ ค ๋๋ฌผ์ ํค์ด๋ค (์ฌ์ฉํ๋ค)
- ๊ทธ๋ฐ๋ฐ ์ฐ๋ฆฌ๊ฐ ์ด์ ์ ๋ง๋ค์ด๋์๋ Tiger๋ผ๋ ํด๋์ค๊ฐ ์๋ค.
- ์ด๋ ์ ์ญ์ ์๋กญ๊ฒ ๋ง๋ animal interface์ ์์์ํค๊ณ ์ถ๋ค.
- ๊ทธ๋ฌ์๊ณ Tiger๋ฅผ ๋ณ๊ฒฝํ์๋ ์ผ์ด ๋๋ฌด ์ปค์ง๋ค.
- ์ด๋ฐ ๊ฒฝ์ฐ Adapter ํจํด์ ์ฌ์ฉํ ์ ์๋ค.
TigerAdapter
๋ผ๋ ๊ตฌ์กฐ์ฒด๋ฅผ ํ๋ ๋ง๋ค๊ณAnimal
์ ์ฑํํ๋ค.TigerAdapter
๋ด๋ถ์๋ Tiger ์ธ์คํด์ค๋ฅผ ๊ฐ์ง๊ณ ์๋ค.- ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ํ๋ ์ธํฐํ์ด์ค์ ๋ง๋ ๊ฐ์ ์ธํ ํด์ฃผ๋ฉด ๋!
- ์ฝ๋
๋ค๋ฅธ ์ด๋ฆ
ํ์ฉ์ฑ
- ๊ธฐ์กด ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์๋ฐ ์ธํฐํ์ด์ค๊ฐ ๋ง์ง ์์ ๋
- ์ด๋ฏธ ๋ง๋ ๊ฒ์ ์ฌ์ฌ์ฉํ๊ณ ์ ํ๋, ์ด ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ ํ ์ ์์ ๋
- ์ฑ
์์๋ ๋ค์ค ์์์ ์ฌ์ฉํ๋ ์๋ฅผ ๋งํ๊ณ ์์ผ๋, ํ์ฌ๋ก์๋ ๊ฐ์ฒด์ ๋ํด์๋ง ์ ์ฉํ๋ ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ์๊ฐํด์ผ ํ๋ค.
- ์ฃฝ์์ ๋ค์ด์๋ชฌ๋ ๋ฌธ์
์ฐธ์ฌ์
- Target(
Animal
) - Client(
User
) - Adaptee(
Tiger
) - Adapter(
TigerAdapter
)
ํ๋ ฅ ๋ฐฉ๋ฒ
- ์ฌ์ฉ์๋ ์ ์์์ ํด๋นํ๋ ํด๋์ค ์ธ์คํด์ค์ ์ฐ์ฐ์ ํธ์ถํ๋ค.
- ์ ์์๋ ํด๋น ์์ฒญ์ ์ํํ๊ธฐ ์ํด ์ ์ ๋์์์ ์ฐ์ฐ์ ํธ์ถํ๋ค.
๊ด๋ จ ํจํด๊ณผ ์ฐจ์ด์
- ๊ฐ๊ต(10. Bridge) ํจํด๊ณผ ์ ์ฌํ๋ค.
- ํ์ง๋ง ์ฌ์ฉ ๋ชฉ์ ์ด ๋ค๋ฅด๋ค.
- 09. Adapter: ์กด์ฌํ๋ ๊ฐ์ฒด์ ์ธํฐํ์ด์ค๋ฅผ ๋ณ๊ฒฝ
- 10. Bridge: ๊ตฌํ๊ณผ ์ถ์ ๊ฐ๋ ์ ๋ถ๋ฆฌ, ๊ทธ ๊ฒฐ๊ณผ๋ก ํ์ฅ์ฑ์ ๋ํ๊ธฐ ์ํจ
- 12. Decorator: ์ธํฐํ์ด์ค ๋ณ๊ฒฝ ์์ด ์๋ก์ด ํ๋ ์ถ๊ฐ ๊ฐ๋ฅํ ๋กํจ
- 15. Proxy: ๋ค๋ฅธ ๊ฐ์ฒด์ ๋ํ ๋๋ฆฌ์ธ ์ญํ ์ ์ํ, ํ์ง๋ง ์ธํฐํ์ด์ค ๋ณ๊ฒฝ ์ฑ ์์ ์์