20. ์ํํธ์จ์ด ์ํคํ ์ฒ
์ํํธ์จ์ด ์ํคํ ์ฒ ์ค๊ณ
์ํํธ์จ์ด์ ๊ณจ๊ฒฉ์ด ๋๋ ๊ธฐ๋ณธ ๊ตฌ์กฐ, ์ํํธ์จ์ด๋ฅผ ๊ตฌ์ฑํ๋ ์์๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ํํํ๋ ์์คํ ์ ๊ตฌ์กฐ๋ฅผ ์ค๊ณ
- ์ฌ์ฉ์์ ๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ์ ๋ฐ์ํ๊ณ , ๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ํด๊ฒฐ ๊ณผ์
๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ : ์์คํ ์ด ๊ฐ์ถฐ์ผํ ํ์์ ์ธ ๊ธฐ๋ฅ์ ๋ํ ์๊ตฌํญ๋ชฉ
๋น๊ธฐ๋ฅ์ ์๊ตฌ์ฌํญ : ๊ทธ ์ธ ํ์ง์ด๋ ์ ์ฝ์ฌํญ์ ๊ดํ ๊ฒ๋ค
• ์ํํธ์จ์ด ์ํคํ ์ฒ์ ๊ธฐ๋ณธ ์๋ฆฌ
1. ๋ชจ๋ํ(Modularity)
์ํํธ์จ์ด์ ์ฑ๋ฅ์ ํฅ์์ํค๊ฑฐ๋ ์์คํ ์ ์์ ๋ฐ ์ฌ์ฌ์ฉ, ์ ์ง ๊ด๋ฆฌ ๋ฑ์ด ์ฉ์ดํ๋๋ก ์์คํ ์ ๊ธฐ๋ฅ๋ค์ ๋ชจ๋๋จ์๋ก ๋๋๋ ๊ฒ
- ์ฌ์ฌ์ฉ์ฑ ํฅ์
- ๋ชจ๋์ ํฌ๊ธฐ๋ฅผ ๋๋ฌด ์๊ฒ ๋๋๋ฉด ๊ฐ์๊ฐ ๋ง์์ ธ ๋ชจ๋๊ฐ์ ํตํฉ ๋น์ฉ์ด ๋ง์ด ๋ฆ
- ๋ชจ๋์ ํฌ๊ธฐ๋ฅผ ๋๋ฌด ํฌ๊ฒ ๋๋๋ฉด ๊ฐ์๊ฐ ์ ์ด ํตํฉ ๋น์ฉ์ ์ ๊ฒ ๋ค์ง๋ง ๋ชจ๋ ํ๋์ ๊ฐ๋ฐ ๋น์ฉ์ด ๋ง์ด ๋ฆ
2. ์ถ์ํ(Abstraction)
๋ถํ์ํ ๋ถ๋ถ์ ์๋ตํ๊ณ ํ์ํ ๋ถ๋ถ์ ๊ฐ์กฐํด ๋ชจ๋ธํ ํ๋ ๊ฒ
๋ฌธ์ ์ ์ ์ฒด์ ์ด๊ณ ํฌ๊ด์ ์ธ ๊ฐ๋ ์ค๊ณ ํ, ์ฐจ๋ก๋ก ์ธ๋ถํํด ๊ตฌ์ฒดํ ์์ผ๋๊ฐ๋ ๊ฒ
- ์ถ์ฑํ์ ์ ํ : ๊ณผ์ ์ถ์ํ, ๋ฐ์ดํฐ ์ถ์ํ, ์ ์ด ์ถ์ํ
- ๊ณผ์ ์ถ์ํ : ์์ธํ ์ํ ๊ณผ์ ์ ์ ์ํ์ง ์๊ณ , ์ ๋ฐ์ ์ธ ํ๋ฆ๋ง ํ์ ํ ์ ์๊ฒ ์ค๊ณ
- ๋ฐ์ดํฐ ์ถ์ํ : ๋ฐ์ดํฐ์ ์ธ๋ถ์ ์ธ ์์ฑ์ด๋ ์ฉ๋๋ฅผ ์ ์ํ์ง ์๊ณ , ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๋ํํ ์ ์๋ ํํ์ผ๋ก ๋์ฒด
- ์ ์ด ์ถ์ํ : ์ด๋ฒคํธ ๋ฐ์์ ์ ํํ ์ ์ฐจ๋ ๋ฐฉ๋ฒ์ ์ ์ํ์ง ์๊ณ , ๋ํํ ์ ์๋ ํํ์ผ๋ก ๋์ฒด
3. ๋จ๊ณ์ ๋ถํด(Stepwise Refinement)
Niklaus Wirth์ ์ํด ์ ์๋ ํํฅ์ ์ค๊ณ ์ ๋ต, ๋ฌธ์ ๋ฅผ ์์์ ์ค์ ๊ฐ๋ ์ผ๋ก๋ถํฐ ํ์์ ๊ฐ๋ ์ผ๋ก ๊ตฌ์ฒดํ์ํค๋ ๋ถํ ๊ธฐ๋ฒ
4. ์ ๋ณด ์๋(Information Hiding)
ํ ๋ชจ๋ ๋ด๋ถ์ ํฌํจ๋ ์ ์ฐจ์ ์๋ฃ๋ค์ ์ ๋ณด๊ฐ ๊ฐ์ถ์ด์ ธ ๋ค๋ฅธ ๋ชจ๋์ด ์ ๊ทผํ๊ฑฐ๋ ๋ณ๊ฒฝํ์ง ๋ชปํ๋๋ก ํจ
- ๋ชจ๋์ ๋ ๋ฆฝ์ ์ผ๋ก ์ํ ํ ์ ์์ด ์์ , ์ํ, ์ ์ง๋ณด์๊ฐ ์ฉ์ด
• ์ํํธ์จ์ด ์ํคํ ์ฒ์ ํ์ง ์์ฑ
ํ์ง ํ๊ฐ ์์๋ค์ ์์คํ ์ธก๋ฉด, ๋น์ฆ๋์ค ์ธก๋ฉด, ์ํคํ ์ฒ ์ธก๋ฉด์ผ๋ก ๊ตฌ๋ถํด ๊ตฌ์ฒดํ ์ํจ ๊ฒ
- ์์คํ ์ธก๋ฉด : ์ฑ๋ฅ, ๋ณด์, ๊ฐ์ฉ์ฑ, ๊ธฐ๋ฅ์ฑ, ์ฌ์ฉ์ฑ, ๋ณ๊ฒฝ ์ฉ์ด์ฑ, ํ์ฅ์ฑ, ์ฉ์ด์ฑ, ๋ฐฐ์น์ฑ, ์์ ์ฑ ๋ฑ
- ๋น์ฆ๋์ค ์ธก๋ฉด : ์์ฅ ์ ์์ฑ, ๋น์ฉ๊ณผ ํํ, ์์ ์์คํ ์๋ช , ๋ชฉํ ์์ฅ, ๊ณต๊ฐ ์ผ์ ๋ฑ
- ์ํคํ ์ฒ ์ธก๋ฉด : ๊ฐ๋ ์ ๋ฌด๊ฒฐ์ฑ, ์ ํ์ฑ, ์๊ฒฐ์ฑ, ๊ตฌ์ถ ๊ฐ๋ฅ์ฑ, ๋ณ๊ฒฝ์ฑ, ์ ์์ฑ, ์ผ์น์ฑ ๋ฑ
• ์ํํธ์จ์ด ์ํคํ ์ฒ์ ์ค๊ณ ๊ณผ์
1. ์ค๊ณ ๋ชฉํ ์ค์
2. ์์คํ ํ์ ๊ฒฐ์
3. ์ํคํ ์ฒ ํจํด ์ ์ฉ
๏ผ์ํคํ ์ฒ ํจํด : ์ํคํ ์ฒ ์ค๊ณ ์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋์ ํด๊ฒฐ ๋ฐฉ์
4. ์๋ธ์์คํ ๊ตฌ์ฒดํ
5. ๊ฒํ
์์คํ ํ์
- ๋ํํ ์์คํ : ์ฌ์ฉ์์ ์๊ตฌ ๋ฐ์์ ์์คํ ์ด ์ด๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ฐ์
- ์ด๋ฒคํธ ์ค์ฌ ์์คํ : ์ธ๋ถ์ ์ํ ๋ณํ์ ๋ฐ๋ผ ๋์
- ๋ณํํ ์์คํ : ๋ฐ์ดํฐ ์ ๋ ฅ ์ ์ ํด์ง ์์ ๋ค์ ์ํํด ๊ฒฐ๊ณผ ์ถ๋ ฅ
- ๊ฐ์ฒด ์์ํ ์์คํ : DB๋ฅผ ์ฌ์ฉํด ํ์ผ์ ํจ๊ณผ์ ์ผ๋ก ์ ์ฅ, ๊ฒ์, ๊ฐฑ์ ํจ
21. ์ํคํ ์ฒ ํจํด
์ํคํ ์ฒ ํจํด
์ํคํ ์ฒ๋ฅผ ์ค๊ณํ ๋ ์ฐธ์กฐํ ์ ์๋ ์ ํ์ ์ธ ํด๊ฒฐ ๋ฐฉ์, ์์
• ์ํคํ ์ฒ ํจํด์ ์ฅ์
- ์ํ์ฐฉ์ค ์ถ์
- ์์ธก ๊ฐ๋ฅ
- ์์ ์ ๊ฐ๋ฐ
• ์ํคํ ์ฒ ํจํด์ ์ข ๋ฅ
1. ๋ ์ด์ด ํจํด(Layers pattern)
์์คํ ๊ณ์ธต์ผ๋ก ๊ตฌ๋ถํด ๊ตฌ์ฑํ๋ ๊ณ ์ ์ ์ธ ๋ฐฉ๋ฒ
- ๊ฐ๊ฐ์ ์๋ธ์์คํ ๋ค์ด ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ด๋ฃธ
ex) OSI ์ฐธ์กฐ ๋ชจ๋ธ
2. ํด๋ผ์ด์ธํธ-์๋ฒ ํจํด(Client-Sever Pattern)
ํ๋์ ์๋ฒ ์ปดํฌ๋ํธ์ ๋ค์์ ํด๋ผ์ด์ธํธ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋๋ ํจํด
- ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋๋นํด ํญ์ ๋๊ธฐ ์ํ ์ ์ง
- ํด๋ผ์ด์ธํธ์ ์๋ฒ๋ ์์ฒญ๊ณผ ์๋ต์ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ ์๋ก ๋ ๋ฆฝ์
3. ํ์ดํ-ํํฐ ํจํด(Pipe-Filter Pattern)
๋ฐ์ดํฐ ์คํธ๋ฆผ ์ ์ฐจ์ ๊ฐ ๋จ๊ณ๋ฅผ ํํฐ ์ปดํฌ๋ํธ๋ก ์บก์ํํ์ฌ ํ์ดํ๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ํจํด
- ์ฌ์ฌ์ฉ์ฑ ์ข์, ์ถ๊ฐ๊ฐ ์ฌ์ ํ์ฅ ์ฉ์ด
- ํํฐ ์ปดํฌ๋ํธ ์ฌ๋ฐฐ์น ๊ฐ๋ฅ
- ๋ณํ, ๋ฒํผ๋ง, ๋๊ธฐํ ๋ฑ์ ์ฃผ๋ก ์ฌ์ฉ
ex) UNIX์ ์(Shell)
4. ๋ชจ๋ธ-๋ทฐ-์ปจํธ๋กค๋ฌ ํจํด(MVC : Model-View-Controller Pattern)
์๋ธ์์คํ ์ 3๊ฐ์ ๋ถ๋ถ์ผ๋ก ๊ตฌ์กฐํํ๋ ํจํด
- ๋ชจ๋ธ(Model) : ์๋ธ์์คํ ์ ํต์ฌ ๊ธฐ๋ฅ๊ณผ ๋ฐ์ดํฐ๋ฅผ ๋ณด๊ด
- ๋ทฐ(View) : ์ฌ์ฉ์์๊ฒ ์ ๋ณด ํ์
- ์ปจํธ๋กค๋ฌ(Controller) : ์ฌ์ฉ์๋ก๋ถํฐ ๋ฐ์ ์ ๋ ฅ ์ฒ๋ฆฌ
- ๊ฐ ๋ถ๋ถ์ ๋ณ๋์ ์ปดํฌ๋ํธ๋ก ๋ถ๋ฆฌ๋์ด ์์, ์ํฅ X
- ๋ํํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ํฉ
5. ๊ธฐํ ํจํด
๋ง์คํฐ-์ฌ๋ ์ด๋ธ ํจํด : ๋ง์คํฐ ์ปดํฌ๋ํธ์์ ์ฌ๋ ์ด๋ธ ์ปดํฌ๋ํธ๋ก ์์ ๋ถํ ํ, ์ฌ๋ ์ด๋ธ์๊ฒ ์ฒ๋ฆฌ๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ค์ ๋๋ ค๋ฐ์
๋ธ๋ก์ปค ํจํด : ์ฌ์ฉ์๊ฐ ์ํ๋ ์๋น์ค์ ํน์ฑ์ ์์ฒญํ๋ฉด ์์ฒญ์ ๋ง๋ ์ปดํฌ๋ํธ์ ์ฌ์ฉ์๋ฅผ ์ฐ๊ฒฐํด ์ค
ํผ์ด-ํฌ-ํผ์ด ํจํด : ํผ์ด=ํ๋์ ์ปดํฌ๋ํธ, ๊ฐ ํผ์ด๋ ํด๋ผ์ด์ธํธ๊ฐ ๋ ์๋ ์๋ฒ๊ฐ ๋ ์๋ ์๋ ํจํด, ๋ฉํฐ์ค๋ ๋ฉ ๋ฐฉ์
์ด๋ฒคํธ-๋ฒ์ค ํจํด : ์์ค๊ฐ ํน์ ์ฑ๋์ ์ด๋ฒคํธ ๋ฉ์์ง๋ฅผ ๋ฐํํ๋ฉด, ํด๋น ์ฑ๋์ ๊ตฌ๋ ํ ๋ฆฌ์ค๋๋ค์ด ๋ฉ์์ง๋ฅผ ๋ฐ์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํจ
๋ธ๋๋ณด๋ ํจํด : ์ปดํฌ๋ํธ๋ค์ ๊ฒ์์ ํตํด ๋ธ๋๋ณด๋์์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐพ์
์ธํฐํ๋ฆฌํฐ ํจํด : ํ๋ก๊ทธ๋จ ์ฝ๋์ ๊ฐ ๋ผ์ธ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์ง์ ํ๊ณ , ๊ธฐํธ๋ง๋ค ํด๋์ค๋ฅผ ๊ฐ๋๋ก ๊ตฌ์ฑ
22. ๊ฐ์ฒด์งํฅ(Object-Oriented)
๊ฐ์ฒด์งํฅ
ํ์ค ์ธ๊ณ์ ๊ฐ์ฒด(Entity)๋ฅผ ๊ธฐ๊ณ ๋ถํ์ฒ๋ผ ํ๋์ ๊ฐ์ฒด(Object)๋ก ๋ง๋ค์ด, ๊ธฐ๊ณ์ ์ธ ๋ถํ๋ค์ ์กฐ๋ฆฝํด ์ ํ์ ๋ง๋ค ๋ฏ์ด ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ ๋์๋ ๊ฐ์ฒด๋ค์ ์กฐ๋ฆฝํด์ ์์ฑํ ์ ์๋ ๊ธฐ๋ฒ
- ์ํํธ์จ์ด์ ์ฌ์ฌ์ฉ ๋ฐ ํ์ฅ ์ฉ์ด, ์ ์ง๋ณด์ ์ฌ์
- ๋ณต์กํ ๊ตฌ์กฐ๋ฅผ ๋จ๊ณ์ ๊ณ์ธต์ ์ผ๋ก ํํ
• ๊ฐ์ฒด์งํฅ์ ๊ตฌ์ฑ์์์ ๊ฐ๋
1. ๊ฐ์ฒด(Object)
๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ๋ฌถ์ด ๋์ ํ๋์ ์ํํธ์จ์ด ๋ชจ๋
- ๋ฐ์ดํฐ = ์์ฑ, ์ํ, ๋ณ์, ์์, ์๋ฃ๊ตฌ์กฐ
- ํจ์ = ๋ฉ์๋, ์๋น์ค, ๋์, ํ์
- ๋ ๋ฆฝ์ ์ผ๋ก ์๋ณ ๊ฐ๋ฅํ ์ด๋ฆ์ ๊ฐ์ง
- ๊ฐ์ฒด๊ฐ ๊ฐ์ง ์ ์๋ ์กฐ๊ฑด = ์ํ(State)
2. ํด๋์ค(Class)
๊ณตํต๋ ์์ฑ๊ณผ ์ฐ์ฐ์ ๊ฐ๋ ๊ฐ์ฒด์ ์งํฉ, ๊ฐ์ฒด์ ์ผ๋ฐ์ ์ธ ํ์ ์ ์๋ฏธ
- ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ค์ด ๊ฐ๋ ์์ฑ๊ณผ ์ฐ์ฐ์ ์ ์ํ๊ณ ์๋ ํ
- ํด๋์ค์ ์ํ ๊ฐ๊ฐ์ ๊ฐ์ฒด = ์ธ์คํด์ค(Instance)
- ๋์ผํ ํด๋์ค์ ์ํ ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ค์ ๊ณตํต๋ ์์ฑ๊ณผ ํ์๋ฅผ ๊ฐ์
3. ์บก์ํ(Encapsulation)
๋ฐ์ดํฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ํจ์๋ฅผ ํ๋๋ก ๋ฌถ์ ๊ฒ์ ์๋ฏธ
- ๋ถํ์ํ ๊ธฐ๋ฅ ์ต์ํ
- ์ํํธ์จ์ด ๊ฐ๋ฐ ๋น์ฉ ์ ๊ฐ
- ๊ฐ๋ฐ ์๋ ํฅ์
4. ์์(Inheritance)
์์ ํด๋์ค์ ๋ชจ๋ ์์ฑ๊ณผ ์ฐ์ฐ์ ํ์ ํด๋์ค๊ฐ ๋ฌผ๋ ค๋ฐ๋ ๊ฒ
- ๋ค์ค ์์ : ํ ๊ฐ์ ํด๋์ค๊ฐ ๋ ๊ฐ ์ด์์ ์์ ํด๋์ค๋ก๋ถํฐ ์์ฑ๊ณผ ์ฐ์ฐ์ ์์ ๋ฐ๋ ๊ฒ
5. ๋คํ์ฑ(Polymorphism)
ํ๋์ ๋ฉ์์ง์ ๋ํด ์ฌ๋ฌ ๊ฐ์ง ํํ์ ์๋ต์ด ์๋ ๊ฒ
23. ๋ชจ๋
๋ชจ๋
๋ชจ๋ํ๋ฅผ ํตํด ๋ถ๋ฆฌ๋ ์์คํ ์ ๊ฐ ๊ธฐ๋ฅ
- ์๋ธ๋ฃจํด, ์๋ธ์์คํ , ์์ ๋จ์ ๋ฑ๊ณผ ๊ฐ์ ์๋ฏธ
- ๋จ๋ ์ผ๋ก ์ปดํ์ผ ๊ฐ๋ฅ, ์ฌ์ฌ์ฉ ๊ฐ๋ฅ
- ๋ชจ๋์ ๋ ๋ฆฝ์ฑ์ ๊ฒฐํฉ๋์ ์์ง๋์ ์ํด ์ธก์ ๋จ
- ๋ ๋ฆฝ์ฑ์ ๋์ด๋ ค๋ฉด ๋ชจ๋์ ๊ฒฐํฉ๋๋ ์ฝํ๊ฒ, ์์ง๋๋ ๊ฐํ๊ฒ, ๋ชจ๋์ ํฌ๊ธฐ๋ ์๊ฒ ๋ง๋ค์ด์ผ ํจ
- ๋ ๋ฆฝ์ฑ์ด ๋์ ์๋ก ๋ชจ๋ ์์ ์ ๋ค๋ฅธ ๋ชจ๋๋ค์๊ฒ ์ํฅ์ ๋ฏธ์น์ง ์๊ณ , ์ค๋ฅ๊ฐ ๋ฐ์ํด๋ ์ฝ๊ฒ ๋ฐ๊ฒฌํ๊ณ ํด๊ฒฐํ ์ ์์
๊ฒฐํฉ๋(Coupling)
๋ชจ๋ ๊ฐ์ ์ํธ ์์กด๋, ๋ ๋ชจ๋ ์ฌ์ด์ ์ฐ๊ด ๊ด๊ณ
- ๊ฒฐํฉ๋๊ฐ ์ฝํ ์๋ก ํ์ง์ด ๋๊ณ , ๊ฐํ ์๋ก ํ์ง์ด ๋ฎ์
- ๊ฒฐํฉ๋๊ฐ ๊ฐํ๋ฉด ์ ์ง๋ณด์ ์์ ์ด ์ด๋ ค์
- ๊ฒฐํฉ๋ ๊ฐํจ ์์ : ์์ค์ ์ธ๊ณต๋ด
์๋ฃ ๊ฒฐํฉ๋ |
๋ชจ๋ ๊ฐ์ ์ธํฐํ์ด์ค๊ฐ ์๋ฃ ์์๋ก๋ง ๊ตฌ์ฑ๋ ๋์ ๊ฒฐํฉ๋ - ๋ค๋ฅธ ๋ชจ๋ ํธ์ถ ์ ๋งค๊ฐ ๋ณ์๋ ์ธ์๋ก ํ ์ดํฐ๋ฅผ ๋๊ฒจ์ฃผ๊ณ , ํธ์ถ ๋ฐ์ ๋ชจ๋์ ๋ฐ์ ๋ฐ์ดํฐ์ ๋ํ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ค์ ๋๋ ค์ฃผ๋ ๋ฐฉ์ |
์คํฌํ ๊ฒฐํฉ๋ |
๋ชจ๋ ๊ฐ์ ์ธํฐํ์ด์ค๋ก ๋ฐฐ์ด์ด๋ ๋ ์ฝ๋ ๋ฑ์ ์๋ฃ ๊ตฌ์กฐ๊ฐ ์ ๋ฌ๋ ๋์ ๊ฒฐํฉ๋ |
์ ์ด ๊ฒฐํฉ๋ |
์ด๋ค ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋ ๋ด๋ถ์ ๋ ผ๋ฆฌ์ ์ธ ํ๋ฆ์ ์ ์ดํ๊ธฐ ์ํด ์ ์ด ์ ํธ๋ฅผ ์ด์ฉํด ํต์ ํ๊ฑฐ๋ ์ ์ด ์์๋ฅผ ์ ๋ฌํ๋ ๊ฒฐํฉ๋ |
์ธ๋ถ ๊ฒฐํฉ๋ |
์ด๋ค ๋ชจ๋์์ ์ ์ธํ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ์ ๋ค๋ฅธ ๋ชจ๋์์ ์ฐธ์กฐํ ๋์ ๊ฒฐํฉ๋ |
๊ณตํต ๊ฒฐํฉ๋ |
๊ณต์ ๋๋ ๊ณตํต ๋ฐ์ดํฐ ์์ญ์ ์ฌ๋ฌ ๋ชจ๋์ด ์ฌ์ฉํ ๋์ ๊ฒฐํฉ๋ |
๋ด์ฉ ๊ฒฐํฉ๋ |
ํ ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ ๋ด๋ถ ๊ธฐ๋ฅ ๋ฐ ๊ทธ ๋ด๋ถ ์๋ฃ๋ฅผ ์ง์ ์ฐธ์กฐํ๊ฑฐ๋ ์์ ํ ๋์ ๊ฒฐํฉ๋ |
์์ง๋(Cohesion)
์ ๋ณด ์๋ ๊ฐ๋ ์ ํ์ฅํ ๊ฒ, ๋ช ๋ น์ด๋ ํธ์ถ๋ฌธ ๋ฑ ๋ชจ๋์ ๋ด๋ถ ์์๋ค์ ์๋ก ๊ด๋ จ๋, ๋ชจ๋์ด ๋ ๋ฆฝ์ ์ธ ๊ธฐ๋ฅ์ผ๋ก ์ ์๋์ด ์๋ ์ ๋
- ์์ง๋๊ฐ ๊ฐํ ์๋ก ํ์ง์ด ๋๊ณ , ์ฝํ ์๋ก ํ์ง์ด ๋ฎ๋ค
- ์์ง๋ ์ฝํจ ์์ : ์ฐ๋ ผ์์ ๊ต์๊ธฐ
๊ธฐ๋ฅ์ ์์ง๋ (Functional Cohesion) |
๋ชจ๋ ๋ด๋ถ์ ๋ชจ๋ ๊ธฐ๋ฅ ์์๋ค์ด ๋จ์ผ ๋ฌธ์ ์ ์ฐ๊ด๋์ด ์ํ๋ ๊ฒฝ์ฐ |
์์ฐจ์ ์์ง๋ (Sequential Cohesion) |
๋ชจ๋ ๋ด ํ๋์ ํ๋์ผ๋ก๋ถํฐ ๋์จ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๊ทธ ๋ค์ ํ๋์ ์ ๋ ฅ ๋ฐ์ดํฐ๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ์ ์์ง๋ |
๊ตํ(ํต์ )์ ์์ง๋ (Communication Cohesion) |
๋์ผํ ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ์ฌ์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์ํํ๋ ๊ตฌ์ฑ ์์๋ค์ด ๋ชจ์์ ๊ฒฝ์ฐ์ ์์ง๋ |
์ ์ฐจ์ ์์ง๋ (Procedural Cohesion) |
๋ชจ๋์ด ๋ค์์ ๊ด๋ จ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋ ๋ชจ๋ ์์ ๊ตฌ์ฑ ์์๋ค์ด ๊ทธ ๊ธฐ๋ฅ์ ์์ฐจ์ ์ผ๋ก ์ํํ ๊ฒฝ์ฐ์ ์์ง๋ |
์๊ฐ์ ์์ง๋ (Temporal Cohesion) |
ํน์ ์๊ฐ์ ์ฒ๋ฆฌ๋๋ ๋ช ๊ฐ์ ๊ธฐ๋ฅ์ ๋ชจ์ ํ๋์ ๋ชจ๋๋ก ์์ฑํ ๊ฒฝ์ฐ์ ์์ง๋ |
๋ ผ๋ฆฌ์ ์์ง๋ (Logical Cohesion) |
์ ์ฌํ ์ฑ๊ฒฉ์ ๊ฐ๊ฑฐ๋ ํน์ ํํ๋ก ๋ถ๋ฅ๋๋ ์ฒ๋ฆฌ ์์๋ค๋ก ํ๋์ ๋ชจ๋์ด ํ์ฑ๋๋ ๊ฒฝ์ฐ์ ์์ง๋ |
์ฐ์ฐ์ ์์ง๋ (Coincidental Cohesion) |
๋ชจ๋ ๋ด๋ถ์ ๊ฐ ๊ตฌ์ฑ ์์๋ค์ด ์๋ก ๊ด๋ จ ์๋ ์์๋ก๋ง ๊ตฌ์ฑ๋ ๊ฒฝ์ฐ์ ์์ง๋ |
ํฌ์ธ(Fan-In) / ํฌ์์(Fan-Out)
- ํฌ์ธ : ์์ ์ ์ฌ์ฉํ๋ ๋ชจ๋์ ์
- ํฌ์์ : ์์ ์ด ํธ์ถํ๋ ๋ชจ๋์ ์
- ํฌ์ธ๊ณผ ํฌ์์์ ๋ถ์ํด ์์คํ ์ ๋ณต์ก๋๋ฅผ ์ ์ ์์
- ํฌ์ธ์ด ๋๋ค = ์ฌ์ฌ์ฉ ์ธก๋ฉด์์ ์ค๊ณ๊ฐ ์๋์์ผ๋, ๋จ์ผ ์ฅ์ ์ ์ด ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ์ค์ ์ ์ธ ๊ด๋ฆฌ ๋ฐ ํ ์คํธ๊ฐ ํ์ํ๋ค
- ํฌ์์์ด ๋๋ค = ๋ถํ์ํ ํธ์ถ์ ํ๊ณ ์๋์ง ๊ฒํ ํ๊ณ , ๋จ์ํ ์ํฌ ์ ์๋์ง ์ฌ๋ถ์ ๋ํ ๊ฒํ ๊ฐ ํ์ํ๋ค
- ์์คํ ์ ๋ณต์ก๋๋ฅผ ์ต์ ํํ๊ธฐ ์ํด์ ํฌ์ธ์ ๋๊ฒ, ํฌ์์์ ๋ฎ๊ฒ ์ค๊ณํด์ผ ํจ
B์ ํฌ์ธ : A (์์ ์๋ ๊ฒ)
B์ ํฌ์์ : E, F (์๋์ ์๋ ๊ฒ)
25. ์ฝ๋
์ฝ๋
์ปดํจํฐ๋ฅผ ์ด์ฉํด ์๋ฃ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ ๋ถ๋ฅ, ์กฐํฉ ๋ฐ ์ง๊ณ๋ฅผ ์ฉ์ดํ๊ฒ ํ๊ณ , ํน์ ์๋ฃ์ ์ถ์ถ์ ์ฝ๊ฒ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ธฐํธ
- ์ผ์ ํ ๊ท์น์ ๋ฐ๋ผ ์์ฑ, ์ ๋ณด ์ฒ๋ฆฌ์ ํจ์จ๊ณผ ์ฒ๋ฆฌ๋ ์ ๋ณด์ ๊ฐ์น์ ์ํฅ์ ๋ฏธ์นจ
• ์ฝ๋์ ์ฃผ์ ๊ธฐ๋ฅ
์๋ณ ๊ธฐ๋ฅ, ๋ถ๋ฅ ๊ธฐ๋ฅ, ๋ฐฐ์ด ๊ธฐ๋ฅ
• ์ฝ๋์ ์ข ๋ฅ
์์ฐจ ์ฝ๋ (Sequence Code) |
์๋ฃ์ ๋ฐ์ ์์, ํฌ๊ธฐ ์์ ๋ฑ ์ผ์ ๊ธฐ์ค์ ๋ฐ๋ผ์ ์ต์ด์ ์๋ฃ๋ถํฐ ์ฐจ๋ก๋ก ์ผ๋ จ๋ฒํธ๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒ ex) 1, 2, 3, 4 ... |
๋ธ๋ก ์ฝ๋ (Block Code) |
์ฝ๋ํ ๋์ ํญ๋ชฉ ์ค์์ ๊ณตํต์ฑ์ด ์๋ ๊ฒ๋ผ๋ฆฌ ๋ธ๋ก์ผ๋ก ๊ตฌ๋ถํ๊ณ , ๊ฐ ๋ธ๋ก ๋ด์์ ์ผ๋ จ๋ฒํธ๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒ ex) 1001~1100 : ์ด๋ฌด๋ถ, 1101~1200 : ์์ ๋ถ |
10์ง ์ฝ๋ (Decimal Code) |
์ฝ๋ํ ๋์ ํญ๋ชฉ์ 0~9๊น์ง 10์ง ๋ถํ ํ๊ณ , ๋ค์ ๊ทธ ๊ฐ๊ฐ์ ๋ํ์ฌ 10์ง ๋ถํ ํ๋ ๋ฐฉ๋ฒ์ ํ์ํ ๋งํผ ๋ฐ๋ณตํ๋ ๋ฐฉ๋ฒ ex) 1000: ๊ณตํ, 1100 : ์ํํธ์จ์ด ๊ณตํ, 1110 : ์ํํธ์จ์ด ์ค๊ณ |
๊ทธ๋ฃน ๋ถ๋ฅ ์ฝ๋ (Group Classification Code) |
์ฝ๋ํ ๋์ ํญ๋ชฉ์ ์ผ์ ๊ธฐ์ค์ ๋ฐ๋ผ ๋๋ถ๋ฅ, ์ค๋ถ๋ฅ, ์๋ถ๋ฅ ๋ฑ์ผ๋ก ๊ตฌ๋ถํ๊ณ , ๊ฐ ๊ทธ๋ฃน ์์์ ์ผ๋ จ๋ฒํธ๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒ ex) 1-01-001 : ๋ณธ์ฌ-์ด๋ฌด๋ถ-์ธ์ฌ๊ณ, 2-01-001 : ์ง์ฌ-์ด๋ฌด๋ถ-์ธ์ฌ๊ณ |
์ฐ์ ์ฝ๋ (Mnemonic Code) |
์ฝ๋ํ ๋์ ํญ๋ชฉ์ ๋ช ์นญ์ด๋ ์ฝํธ์ ๊ด๊ณ์๋ ์ซ์๋ ๋ฌธ์, ๊ธฐํธ๋ฅผ ์ด์ฉํด ์ฝ๋๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ๋ฒ ex) TV-40 : 40์ธ์น TV |
ํ์ ์ซ์ ์ฝ๋ (Significant Digit Code) |
์ฝ๋ํ ๋์ ํญ๋ชฉ์ ์ฑ์ง์ ๋ฌผ๋ฆฌ์ ์์น๋ฅผ ๊ทธ๋๋ก ์ฝ๋์ ์ ์ฉ์ํค๋ ๋ฐฉ๋ฒ ex) 120-720-1500 : ๋๊ป*ํญ*๊ธธ์ด๊ฐ 120*720*1500์ธ ๊ฐํ |
ํฉ์ฑ ์ฝ๋ (Combined Code) |
ํ์ํ ๊ธฐ๋ฅ์ ํ๋์ ์ฝ๋๋ก ์ํํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ 2๊ฐ ์ด์์ ์ฝ๋๋ฅผ ์กฐํฉํ์ฌ ๋ง๋๋ ๋ฐฉ๋ฒ |
์ฝ๋ ๋ถ์ฌ ์ฒด๊ณ
์ด๋ฆ๋ง์ผ๋ก ๊ฐ์ฒด์ ์ฉ๋์ ์ ์ฉ ๋ฒ์๋ฅผ ์ ์ ์๋๋ก ์ฝ๋๋ฅผ ๋ถ์ฌํ๋ ๋ฐฉ์
- ๊ฐ ๊ฐ์ฒด์ ์ ์ผํ ์ฝ๋๋ฅผ ๋ถ์ฌํด ๊ฐ์ฒด๋ค์ ์๋ณ ๋ฐ ์ถ์ถ์ ์ฉ์ดํ๊ฒ ํจ
- ์ฝ๋๋ฅผ ๋ถ์ฌํ๊ธฐ ์ ์ ๊ฐ ๋จ์ ์์คํ ์ ๊ณ ์ ํ ์ฝ๋์ ๊ฐ์ฒด๋ฅผ ๋ํ๋ด๋ ์ฝ๋ ๋ฑ์ด ์ ์๋์ด์ผ ํจ
- ์ฝ๋ ๋ถ์ฌ ์ฒด๊ณ๋ฅผ ๋ด๋นํ๋ ์๋ ์ฝ๋์ ์๋ฆฟ์์ ๊ตฌ๋ถ์, ๊ตฌ์กฐ ๋ฑ์ ์์ธํ๊ฒ ๋ช ์ํด์ผ ํจ
26. ๋์์ธ ํจํด
๋์์ธ ํจํด
๊ฐ ๋ชจ๋์ ์ธ๋ถํ๋ ์ญํ ์ด๋ ๋ชจ๋๋ค ๊ฐ์ ์ธํฐํ์ด์ค์ ๊ฐ์ ์ฝ๋๋ฅผ ์์ฑํ๋ ์์ค์ ์ธ๋ถ์ ์ธ ๊ตฌํ ๋ฐฉ์์ ์ค๊ณํ ๋ ์ฐธ์กฐํ ์ ์๋ ์ ํ์ ์ธ ํด๊ฒฐ ๋ฐฉ์, ์์
- ๋์์ธ ํจํด์ GoF(Gang of Four, ์๋ฆญ ๊ฐ๋ง, ๋ฆฌ์ฐจ๋ ํฌ๋ฆ, ๋ํ ์กด์จ, ์กด ๋ธ๋ฆฌ์๋์ค)๊ฐ ์ฒ์์ผ๋ก ๊ตฌ์ฒดํ ๋ฐ ์ฒด๊ณํ ํจ
- GoF์ ๋์์ธ ํจํด์ ์ ํ์ ๋ฐ๋ผ ์์ฑ ํจํด 5๊ฐ, ๊ตฌ์กฐ ํจํด 7๊ฐ, ํ์ ํจํด 11๊ฐ ์ด 23๊ฐ์ ํจํด์ผ๋ก ๊ตฌ์ฑ๋จ
์ํคํ ์ฒ ํจํด : ์ ์ฒด ์์คํ ์ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๊ธฐ ์ํ ์ฐธ์กฐ ๋ชจ๋ธ
๋์์ธ ํจํด : ์๋ธ์์คํ ์ ์ํ๋ ์ปดํฌ๋ํธ๋ค๊ณผ ๊ทธ ๊ด๊ณ๋ฅผ ์ค๊ณํ๊ธฐ ์ํ ์ฐธ์กฐ ๋ชจ๋ธ
- ๋ช๋ช ๋์์ธ ํจํด์ ํน์ ์ํคํ ์ฒ ํจํด์ ๊ตฌํํ๋๋ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋จ
- ์ํคํ ์ฒ ํจํด์ ๋์์ธ ํจํด๋ณด๋ค ์์ ์์ค์ ์ค๊ณ์ ์ฌ์ฉ๋จ
์์ฑ ํจํด(Creational Pattern)
๊ฐ์ฒด์ ์์ฑ๊ณผ ์ฐธ์กฐ ๊ณผ์ ์ ์บก์ํ ํ์ฌ ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ฑฐ๋ ๋ณ๊ฒฝ๋์ด๋ ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ์ ์ํฅ์ ํฌ๊ฒ ๋ฐ์ง ์๋๋ก ํด ํ๋ก๊ทธ๋จ์ ์ ์ฐ์ฑ ๋ํด์ค
- ์ถ์ ํฉํ ๋ฆฌ(Abstract Factory) : ๊ตฌ์ฒด์ ์ธ ํด๋์ค์ ์์กดํ์ง ์๊ณ , ์ธํฐํ์ด์ค๋ฅผ ํตํด ์๋ก ์ฐ๊ด, ์์กดํ๋ ๊ฐ์ฒด๋ค์ ๊ทธ๋ฃน์ผ๋ก ์์ฑํด ์ถ์์ ์ผ๋ก ํํ
- ๋น๋(Builder) : ์๊ฒ ๋ถ๋ฆฌ๋ ์ธ์คํด์ค๋ฅผ ๊ฑด์ถ ํ๋ฏ์ด ์กฐํฉํ์ฌ ๊ฐ์ฒด ์์ฑ
- ํฉํ ๋ฆฌ ๋ฉ์๋(Factory Method) : ๊ฐ์ฒด ์์ฑ์ ์๋ธ ํด๋์ค์์ ์ฒ๋ฆฌํ๋๋ก ๋ถ๋ฆฌํ์ฌ ์บก์ํํ ํจํด
- ํ๋กํ ํ์ (Prototype) : ์๋ณธ ๊ฐ์ฒด๋ฅผ ๋ณต์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ํจํด
- ์ฑ๊ธํค(Singleton) : ํ๋์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ด๋์๋ ์ฐธ์กฐํ ์ ์์ง๋ง, ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๋์์ ์ฐธ์กฐํ ์ ์์
๊ตฌ์กฐ ํจํด(Structural Pattern)
ํด๋์ค๋ ๊ฐ์ฒด๋ค์ ์กฐํฉํด ๋ ํฐ ๊ตฌ์กฐ๋ก ๋ง๋ค ์ ์๊ฒ ํด์ฃผ๋ ํจํด
- ์ด๋ํฐ(Adapter) : ํธํ์ฑ์ด ์๋ ํด๋์ค๋ค์ ์ธํฐํ์ด์ค๋ฅผ ๋ค๋ฅธ ํด๋์ค๊ฐ ์ด์ฉํ ์ ์๋๋ก ๋ณํํด์ฃผ๋ ํจํด
- ๋ธ๋ฆฌ์ง(Bridge) : ๊ตฌํ๋ถ์์ ์ถ์์ธต์ ๋ถ๋ฆฌํด ์๋ก๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฅํ ์ ์๋๋ก ๊ตฌ์ฑํ ํจํด
- ์ปดํฌ์งํธ(Composite) : ์ฌ๋ฌ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง ๋ณตํฉ ๊ฐ์ฒด์ ๋จ์ผ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ ์์ด ๋ค๋ฃจ๊ณ ์ ํ ๋ ์ฌ์ฉํ๋ ํจํด
- ๋ฐ์ฝ๋ ์ดํฐ(Decorator) : ๊ฐ์ฒด ๊ฐ์ ๊ฒฐํฉ์ ํตํด ๋ฅ๋์ ๊ธฐ๋ฅ๋ค์ ํ์ฅํ ์ ์๋ ํจํด
- ํผ์ธ๋(Facade) : ๋ณต์กํ ์๋ธ ํด๋์ค๋ค์ ํผํด ๋ ์์์ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌ์ฑํจ์ผ๋ก์จ ์๋ธ ํด๋์ค๋ค์ ๊ธฐ๋ฅ์ ๊ฐํธํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ ํจํด
- ํ๋ผ์ด์จ์ดํธ(Flyweight) : ์ธ์คํด์ค๊ฐ ํ์ํ ๋๋ง๋ค ๋งค๋ฒ ์์ฑํ๋ ๊ฒ์ด ์๋๊ณ ๊ฐ๋ฅํ ํ ๊ณต์ ํด์ ์ฌ์ฉํจ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๋ ํจํด
- ํ๋ก์(Proxy) : ์ ๊ทผ์ด ์ด๋ ค์ด ๊ฐ์ฒด์ ์ฌ๊ธฐ์ ์ฐ๊ฒฐํ๋ ค๋ ๊ฐ์ฒด ์ฌ์ด์์ ์ธํฐํ์ด์ค ์ญํ ์ํํ๋ ํจํด
ํ์ ํจํด(Behavioral Pattern)
ํ๋์ ๊ฐ์ฒด๋ก ์ํํ ์ ์๋ ์์ ์ ์ฌ๋ฌ ๊ฐ์ฒด๋ก ๋ถ๋ฐฐํ๋ฉด์ ๊ฒฐํฉ๋๋ฅผ ์ต์ํ ํ ์ ์๋๋ก ๋์์ฃผ๋ ํจํด
- ์ฑ ์ ์ฐ์(Chain of Responsibility) : ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ ๊ฐ์ฒด๊ฐ ๋ ์ด์ ์กด์ฌํ์ฌ ํ ๊ฐ์ฒด๊ฐ ์ฒ๋ฆฌํ์ง ๋ชปํ๋ฉด ๋ค์ ๊ฐ์ฒด๋ก ๋์ด๊ฐ๋ ํํ์ ํจํด
- ์ปค๋ฉ๋(Command) : ์์ฒญ์ ๊ฐ์ฒด์ ํํ๋ก ์บก์ํํ์ฌ ์ฌ์ด์ฉํ๊ฑฐ๋ ์ทจ์ํ ์ ์๋๋ก ์์ฒญ์ ํ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ฑฐ๋ ๋ก๊ทธ์ ๋จ๊ธฐ๋ ํจํด
- ์ธํฐํ๋ฆฌํฐ(Interpreter) : ์ธ์ด์ ๋ฌธ๋ฒ ํํ์ ์ ์ํ๋ ํจํด
- ๋ฐ๋ณต์(lterator) : ์๋ฃ ๊ตฌ์กฐ์ ๊ฐ์ด ์ ๊ทผ์ด ์ฆ์ ๊ฐ์ฒด ๋ํด ๋์ผํ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ํจํด
- ์ค์ฌ์(Mediator) : ์๋ง์ ๊ฐ์ฒด๋ค ๊ฐ์ ๋ณต์กํ ์ํธ์์ฉ์ ์บก์ํํ์ฌ ๊ฐ์ฒด๋ก ์ ์ํ๋ ํจํด
- ๋ฉ๋ฉํ (Memento) : ํน์ ์์ ์์์ ๊ฐ์ฒด ๋ด๋ถ ์ํ๋ฅผ ๊ฐ์ฒดํํ๋ฏ๋ก์จ ์ดํ ์์ฒญ์ ๋ฐ๋ผ ๊ฐ์ฒด๋ฅผ ํด๋น ์์ ์ ์ํ๋ก ๋๋ฆด ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํจํด
- ์ต์๋ฒ(Observer) : ํ ๊ฐ์ฒด์ ์ํ๊ฐ ๋ณํํ๋ฉด ๊ฐ์ฒด์ ์์๋์ด ์๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ค์๊ฒ ๋ณํ๋ ์ํ๋ฅผ ์ ๋ฌํ๋ ํจํด
- ์ํ(State) : ๊ฐ์ฒด์ ์ํ์ ๋ฐ๋ผ ๋์ผํ ๋์์ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌํด์ผ ํ ๋ ์ฌ์ฉํ๋ ํจํด
- ์ ๋ต(Strategy) : ๋์ผํ ๊ณ์ด์ ์๊ณ ๋ฆฌ์ฆ๋ค์ ๊ฐ๋ณ์ ์ผ๋ก ์บก์ํํ์ฌ ์ํธ ๊ตํํ ์ ์๊ฒ ์ ์ํ๋ ํจํด
- ํ ํ๋ฆฟ ๋ฉ์๋ : ์์ ํด๋์ค์์ ๊ณจ๊ฒฉ์ ์ ์ํ๊ณ , ํ์ ํด๋์ค์์ ์ธ๋ถ ์ฒ๋ฆฌ๋ฅผ ๊ตฌ์ฒดํํ๋ ๊ตฌ์กฐ์ ํจํด
- ๋ฐฉ๋ฌธ์(Visitor) : ๊ฐ ํด๋์ค๋ค์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์์ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํ์ฌ ๋ณ๋์ ํด๋์ค๋ก ๊ตฌ์ฑํ๋ ํจํด