์ฃผ์ด์ง ์ํฉ ๋ฐ ์ฉ๋์ ๋ฐ๋ผ ์ด๋ค ๊ฐ์ฒด์ ์ฑ ์์ ๋ง๋ถ์ด๋ ํจํด์ผ๋ก ๊ธฐ๋ฅ ํ์ฅ์ด ํ์ํ ๋ ์๋ธํด๋์ฑ ๋์ ์ธ ์ ์๋ ํจํด์ ๋๋ค. ์ฆ ๊ธฐ์กด ๊ฐ์ฒด๊ฐ ๊ฐ์ง ๋์๋ค์ ํฌํจํ๋ ํน์ ๋ํผ๋ฅผ ๋ง๋ค ์ ์๋ ๋์์ธ ํจํด์ ๋๋ค.
๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ์๊ธฐ์์ ์ ๋ค์ ์๊ธฐ ์์ ์ผ๋ก ๊ฐ์ธ๋ฉด์ ํฐ ๋ธ๋ก์ ๋ง๋ค์ด ๋ด๋ ๊ฒ์ด ํน์ง์ด ๋น๋ค. ์์ ๋ธ๋ก์ ๋ค์ ์์ ๋ธ๋ก์ผ๋ก ๊ฐ์ธ๋ ํน์ง ๋๋ฌธ์ Wrapper pattern์ด๋ผ๊ณ ๋ ๋ถ๋ฆฝ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ๋ธ๋ก์ผ๋ก ์ ์ ํฐ ๋ธ๋ก์ผ๋ก ์๋๋ค๋ ๋ค๋ ํน์ง ๋๋ฌธ์ Structural pattern ํจํด์ด๋ผ๊ณ ๋ถ๋ฆ ๋๋ค.
- ๋ค๋ฅธ ๊ฐ์ฒด๋ค์ ์ํฅ์ ์ฃผ์ง ์๊ณ ๊ฐ๋ณ ๊ฐ์ฒด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ณ ์ถ์ ๋ ์ฌ์ฉํฉ๋๋ค.
- ์ถ๊ฐํ ๊ธฐ๋ฅ์ ์์จ ๋๋ ์ฌ์ฉํฉ๋๋ค.
- ์์์ ์ฌ์ฉํด์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ธฐ ์ด๋ ค์ธ ๋ ์ฌ์ฉํฉ๋๋ค.
๋ฐ์ฝ๋ ์ดํฐ ํจํด ์กฐ๊ธ ๋ ์ฝ๊ฒ ์ดํดํ๊ธฐ~
https://refactoring.guru/ko/design-patterns/decorator๋์ด ์ค๋ช ์ด ๋ ์๋์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๋ถ์ ์ท์ ์ ๋ ๊ฒ์ ๋ฐ์ฝ๋ ์ดํฐ ํจํด์ ์ค๋ช ํ์ต๋๋ค.
"๋น์ ์ ์ถ์ ๋ ์ค์จํฐ๋ก ๋ชธ์ ๊ฐ์๋๋ค. ์ค์จํฐ๋ฅผ ์
์ด๋ ์ถฅ๋ค๋ฉด ์ฌํท์ ์
๊ณ , ๋ ๋น๊ฐ ์ค๋ฉด ๋น์ท์ ์
์ต๋๋ค. ์ด ๋ชจ๋ ์ท์ ๊ธฐ์ด ํ๋์ ํ์ฅํ์ง๋ง, ๋น์ ์ ์ผ๋ถ๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ํ์ํ ๋๋ง๋ค ์ท์ ์ฝ๊ฒ ๋ฒ์ ์ ์์ต๋๋ค" (์ค๋ช
์ด ๋๋ฌด ์ฐฐ๋ก๊ฐ๋ค์....)
๋ง์ฝ ์ ์์ ๊ฐ ์ดํด๊ฐ ์์๋๋ฉด ์ฝ์ผํ๋ฒ ๋ณด์๋ฉด ๋ฐ๋ก ์ดํด๋ฉ๋๋ค.
- ์์์ ํตํ ํ์ ํด๋์ค๋ฅผ ๋ง๋ค์ง ์๊ณ ๊ฐ์ฒด์ ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์์ต๋๋ค.
- ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ํ ํ์ฌ ์ฌ๋ฌ ๋์์ ํฉ์น ์ ์์ต๋๋ค.
- ๋จ์ผ ์ฑ ์ ์์น์ ์ค์ํฉ๋๋ค.
- ๋ฐํ์์์ ๊ฐ์ฒด์ ์ฑ ์์ ์ถ๊ฐํ๊ณ ์ ๊ฑฐํ ์ ์์ต๋๋ค.
- ์ฝ๋๊ฐ ๋ณต์กํด์ง ์ ์์ต๋๋ค.
- ๋ํผ ์คํ์์ ํน์ ๋ํผ๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ด ์ด๋ ต์ต๋๋ค.
- ๋ฐ์ฝ๋ ์ดํฐ ๊ธฐ๋ฅ์ด ๋ฐ์ฝ๋ ์ดํฐ ์คํ ์์์ ์์กดํด์ผ ํฉ๋๋ค.
Decorator Pattern ์์ ์ฝ๋
์ค๋๋ ์๊ณ ๋ง์ผ์ จ์ต๋๋ค.