Adapter ํจํด์ผ๋ก ์๋ ค์ ธ์๋ Wrapper ํจํด์ ๋ํด ์์๋ณด์.
์ด๋ฆ์ ๋ฌธ์
- GoF: 09. Adapter
- ์ ๊ณ: Wrapper
Wrapper
- ์ด๋ค ํด๋์ค์ ๋ฉ์๋ ์๊ทธ๋ด์ฒ๊ฐ ๋ง์ ๋ค์ง ์์ ๋ ๋ค๋ฅธ ๊ฒ์ผ๋ก ๋ณ๊ฒฝ
- ๋จ, ๊ทธ ํด๋์ค์ ๋ฉ์๋ ์๊ทธ๋ด์ฒ๋ฅผ ์ง์ ๋ณ๊ฒฝํ์ง ์์
- ๊ทธ ํด๋์ค์ ์์ค์ฝ๋๊ฐ ์์ ์๋ ์์ - ๋จ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๊ฐ์ ธ๋ค ์ฌ์ฉํ ๊ฒฝ์ฐ
- ๊ทธ ํด๋์ค์ ์์กดํ๋ ๋ค๋ฅธ ์ฝ๋๊ฐ ์์ ์๋ ์์ - ๋ณ๊ฒฝ์ ์์น ์์
- ๊ทธ ๋์ ์๋ก์ด ํด๋์ค๋ฅผ ๋ง๋ค์ด ๊ธฐ์กด ํด๋์ค๋ฅผ ๊ฐ์ธ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ
Wrapper ํจํด ์ดํด ๋ฐฉ๋ฒ
- Wrap
- ํน์ ํด๋์ค๋ฅผ ๊ฐ์ธ ๋ด๊ฐ ์ํ๋ ๋ฉ์๋ ์๊ทธ๋ด์ณ๋ก ๋ฐ๊ฟ์ ์ฌ์ฉ
- ์ ๋ฌผ ํฌ์ฅ์ง
- Adapt
- ํน์ ํด๋์ค์ ๋ค๋ฅธ ํด๋์ค ์ฌ์ด๋ฅผ ์ด์ด์ฃผ๋ ์ญํ ๋ก ์ฌ์ฉ
- ์ง์ง ์ฝ์ผํธ ์ฌ์ด์ ๊ผฝ๋ 110v ์ด๋ํฐ๋ฅผ ์๊ฐํด๋ณด์.
๋ฉ์๋ ์๊ทธ๋ด์ฒ๋ฅผ ๋ฐ๊พธ๋ ค๋ ์ด์
- ์ถํ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฐ๊ฟ ๋, ํด๋ผ์ด์ธํธ ์ฝ๋๋ ๋ณ๊ฒฝํ์ง ์๊ธฐ ์ํด
- ๊ทธ๋ฅ ์ฌ์ฉ์ค์ธ ๋ฉ์๋๊ฐ ํ์ค์ ๋ง์ง ์์์
- ๊ธฐ์กด ํด๋์ค์ ์๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ์ํด
- ํ์ฅ๋ ์ฉ๋: ๋ด๋ถ ๊ฐ์ฒด๋ฅผ ํด๋ผ์ด์ธํธ์๊ฒ ๋
ธ์ถ์ํค์ง ์๊ธฐ ์ํด
- ํน์ ๋ด๋ถ์์ ์ฌ์ฉํ๋ ๊ฐ์ฒด A๊ฐ ์๋ค๊ณ ํ์.
- ๊ทธ๋ฐ๋ฐ ์ด๊ฑธ ๋ฐ๊นฅ์ชฝ์์ ์ฌ์ฉํ ์ด์ ๊ฐ ์๊ฒผ๋ค.
- ๊ทธ๋ฐ๋ฐ ๋ชจ๋ ๊ฐ์ ์ฌ์ฉํ ํ์๋ ์๋ค.
- ์ด๋ด ๊ฒฝ์ฐ ๊ฐ์ธ์ ๋ฐ์ผ๋ก ์ ๋ฌํ์ฌ ์ํ๋ ๊ฐ์๋ง ์ ๊ทผ๊ฐ๋ฅํ๋๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค.
์ค์ ์
- ์๋์ฐ์์ ์ฌ์ฉ ๊ฐ๋ฅํ 3D ๊ทธ๋ํฝ API๋ ๋ํ์ ์ผ๋ก ๋๊ฐ์
- Direct X
- Open GL
- ๋ API ๋ชจ๋ ์ปดํจํฐ์ ์ค์น๋ ๊ทธ๋ํฝ ์นด๋๋ฅผ ์ด์ฉ
- ๋ฐ๋ผ์ ๋ API์์ ์ง์ํ๋ ๊ธฐ๋ฅ์ด ๋งค์ฐ ๋น์ทํจ
- Open GL:
clearScreen(float, float, float, float)
- DirectX:
clear(int, int, int, int)
- Open GL:
- signature๊ฐ ๋ค๋ฅด์ง๋ง ํ๋ ๋์์ ๊ฐ์
- float - [0.0, 1.0] : %๋ก ๋ฐ์
- int - [0, 255]
ํด๋ผ์ด์ธํธ ์ ์ฅ
- OpenGL์ DirectX๋ก ๋ฐ๊พธ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๋ฉด ๋ชจ๋ ๊ณณ์ ์ฐพ์์ ๊ณ ์ณ์ผ ํ๋ค.
- ์ฌ์ง์ด ํ๋ผ๋ฏธํฐ ์์๋ ๋ค๋ฅด๋ค.
- ๋ฉ์๋ ์ด๋ฆ, ์์, ๊ฐ๋ ๋ฐ๋๋ค.
- ์์ ํ ์ฝ๋๊ฐ ๋ง์์๋ก ์ค์ํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค.
- ์ด๋ด ๋ Wrapper class๋ฅผ ๋ง๋ค๋ฉด ์ค์ํ ๊ฐ๋ฅ์ฑ์ด ์ค์ด๋ ๋ค.
Wrapper Class ์ฌ์ฉ
- Graphics ๊ฐ์ฒด์ ๋ฉ์๋๋ง ํธ์ถํด์ค๋ค.
- ๋ง์ฝ ์ฌ๊ธฐ์ DirectX๋ก ๋ฐ๋๋ค๋ฉด? Graphics์ signature๋ ๋ณ๊ฒฝํ์ง ์๊ณ ๋ด๋ถ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ค.
Wrapper์ DTO
- DataBase์ ์ ์ฅํ๊ธฐ ์ํ ๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ทธ ์์ฑ์ ์๊ฐ ๋งค์ฐ ๋ง์ ๊ฒ์ด๋ค.
- ๊ทธ์ ๋ฐํด ํ๋ฉด์์ ์ค์ง์ ์ผ๋ก ๋ณด์ฌ์ฃผ๋ ๋ฐ์ดํฐ ์์ฑ์ ์๋ ์ ๋ค.
- ์ด๋ด ๊ฒฝ์ฐ Database์์ ์ฌ์ฉํ๋ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉด์ ๋ณด์ฌ์ค ์๋ ์๋ค.
- ํ์ง๋ง ๋ค์์ ์ ์์ ์ข์ง ์๋ค.
- ํ์์ด์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํจ
- ๋ฏผ๊ฐํ ์ ๋ณด ํฌํจ ๊ฐ๋ฅ์ฑ์ด ์์
- ์ฆ, ํ๋ฉด์ ๋ณด์ฌ์ง๊ธฐ ์ํ ์ ๋ณด๋ง์ ์ ์ฌ์ํ ๋ชจ๋ธ์ด ํ์ํ๋ค.
- ํด๋ผ์ด์ธํธ๊ฐ ํ์๋ก ํ๋ ์ ๋ณด๋ง์ ๋ฐํ
- ์ด๋ฐ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ ์ก์๋ง ์ฌ์ฉํ๋ ๊ฐ์ฒด๋ฅผ DTO(Data Transfer Object)๋ผ๊ณ ํ๋ค.
์๋ฐํ๊ฒ Wrapper๋ ์๋๋ค.
- ๊ฐ์ธ๋ ํํ๋ ์๋๋ค.
- ํ์ง๋ง Adapt ์ธก๋ฉด์์ ์ฌ์ฉํ๋ค๋ฉด, ํ ํด๋์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ด ํ์์ ๋ง๊ฒ ๋ฐ๊พผ๋ค๋ ์ ์์ ๋น์ทํ๋ค.
- A์์ B๋ก adpatํ์ฌ ์ ๋ฌ