์ปดํฌ์งํธ ํจํด์ ๊ตฌ์กฐ์ ์ค๊ณ ํจํด์ผ๋ก ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ๋ณ ๊ฐ์ฒด์ ๊ฐ์ฒด ๊ทธ๋ฃน์ ๊ท ์ผํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค. ํ์ผ ์์คํ
, UI, ์กฐ์ง๋ ๋ฑ ํธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถํ๋ ๋ฐ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ, 'has-a' ๊ด๊ณ๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๊ท ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ๋ฆฌํ ๋
ธ๋์ ์ปดํฌ์งํธ ๋
ธ๋๋ฅผ ๊ท ์ผํ๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋ ์๋๋ฆฌ์ค์์ ์ ์ฉํฉ๋๋ค. ์ปดํฌ์งํธ ํจํด์์๋ ๊ฐ๋ณ ๊ฐ์ฒด์ ์ปดํฌ์ง์
์ ๊ท ์ผํ๊ฒ ์ฒ๋ฆฌํ์ฌ ์ฌ๊ท์ ๊ตฌ์ฑ๊ณผ ๊ณ์ธต์ ํ์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด ํจํด์ ๊ท ์ผ์ฑ, ์ฌ๊ท์ ๊ตฌ์ฑ, ์คํ/ํด๋ก์ฆ๋ ์์น์ ๋ฐ๋ฅด๋ฏ๋ก ์ ์ฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ์ฝ๋๋ฅผ ์ดํดํ๊ธฐ ์ด๋ ค์์ง ์ ์์ผ๋ฉฐ, ๋๊ท๋ชจ ํธ๋ฆฌ์์ ์ฑ๋ฅ ์ ํ๋ฅผ ํผํ๊ธฐ ์ํด ์ฃผ์ ๊น์ ํ์์ด ํ์ํฉ๋๋ค. ์ปดํฌ์งํธ ํจํด์ ํ์ผ ์์คํ
, ๋ฉ๋ด, UI ํธ๋ฆฌ, ์กฐ์ง๋ ๋ฑ ํธ๋ฆฌ์ ๊ฐ์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ธ๋งํ๋ ๋ฐ ์ด์์ ์
๋๋ค. ์๋ฐ์์๋ java.awt.Component์ javax.swing.JComponent์์ ์ปดํฌ์งํธ ํจํด์ ์๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์ด ํจํด์ ๋ฌธ์ ๋๋ฉ์ธ์ด ์ฌ๊ท์ ํ์ ๋๋ ๊ทธ๋ฃน-๋ฆฌํ ๊ด๊ณ๋ฅผ ์๊ตฌํ ๋ ์ ์ฉํ๋ฉฐ, ์ปดํฌ์งํธ ์์น์ ๋ฐ๋ผ ๊ฐ๋ณ ๊ฐ์ฒด์ ์ปดํฌ์งํธ๋ฅผ ๊ท ์ผํ๊ฒ ์ฒ๋ฆฌํฉ๋๋ค. ์ปดํฌ์งํธ ํจํด์ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ๋ณ ๊ฐ์ฒด์ ๊ฐ์ฒด ๊ทธ๋ฃน์ ๋์ผํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ด ์ ์ฐํ๊ณ ์ค์ฒฉ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
dev.to
๐ณ Composite Design Pattern โ Java LLD + UML + Real Use Cases
