GoF์ ๋์์ธ ํจํด, ์ฑ ์์ฐ์ ํจํด์ ๋ํด ์์๋ณธ๋ค.
ํด๋น ๊ธ์, ๋ค์์ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ดํดํ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค.
ํต์ฌ ์์ฝ
- ์ฌ๋ฌ๊ฐ์ ์ฑ ์๋ค์ ๋์ ์ผ๋ก ์ฐ๊ฒฐํด์ ์์ฐจ์ ์ผ๋ก ์คํํ๋ ํจํด
- ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ ๊ฐ์ฒด์ ๋ฐ์ ์ฒ๋ฆฌํ๋ ๊ฐ์ฒด๋ค ๊ฐ์ ๊ฒฐํฉ๋๋ฅผ ๋ฎ์ถ๋ ํจํด
- ๊ธฐ๋ฅ์ ํด๋์ค๋ณ๋ก ๋ถ๋ฆฌํ์ฌ ๊ตฌํํ๋๋ก ํจ
- ๊ฐ๊ฐ์ ํด๋์ค์์ ์์ ์ ์ฑ ์๋ง์ ์ต์ ํํ ์ ์์
์์
- ๋ ์์ ๋ชจ๋ ์์ฐจ์ ์ผ๋ก ์์ ์ด ๋งก์ ์ฑ ์๋ง ์ํํ๊ณ ๋ค์์ผ๋ก ๋๊ธด๋ค.
GoF์ฑ ์์ ๋์ค๋ ์ฑ ์์ฐ์ ํจํด Code
- ์๋์ ๋ชจ์๋๋ก ์ ์ด๋ณด๊ธด ํ์ผ๋,
setNext
์์ฒด๋ฅผ ์คํ์ํฌ ์ ์๋ค. - ๋ฐ์์ ์ค๋ช ํ๊ฒ ์ผ๋, ๊ฐ์ธ์ ์ผ๋ก ์ด ์์๋ ์ข์ง ์๋ค๊ณ ์๊ฐํ๋ค.
Handler
ProtocolHandler
DomainHandler
PortHandler
main
์ฌ๋ฐ๋ฅธ ์ฑ ์ ์ฐ์ ํจํด
- ๊ตณ์ด
setNext()
๊ฐ์ ๊ฒ์ ์ฌ์ฉํด์ผ ํ๋๊ฐ?- ๊ด๋ฆฌ ๊ฐ์ฒด๋ฅผ ํ๋ ๋๊ณ , ๊ฑฐ๊ธฐ์ ๋ค์์ผ๋ก๋ง ๋๊ฒจ์ฃผ๋ฉด ๋์ง ์๋๊ฐ?
- ์ฐ์๋ฅผ ๊ผญ ํด๋์ค๊ฐ ์ฒ๋ฆฌํ๋๋ก ํด์ผ ํ๋๊ฐ? ์ฑ ์์ ๋๋๋๊ฒ ๊ด๋ฆฌ์ธก๋ฉด์์ ์ข์ง ์์๊ฐ?
- ์๊ธฐ ์์ ์ ๋ฆฌํดํ๋ ํ๋ฃจ์ธํธ ์ธํฐํ์ด์ค ๋ฐฉ์๋ ์๋๋ค.
- ์คํ๋ ค ํผ๋์ ๊ฐ์ค์ํค๋ ๋ฐฉ๋ฒ.
- ์ฐ์์ ์ผ๋ก ์ฐ๊ฒฐ๋์ด ์ฑ ์์ ์ํ, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ฑ ์์ ๊ฒฉ๋ฆฌํ์ฌ ๋๋๋ ๊ฒ์ด ๋ณธ์ง์ ์ผ๋ก ์ํ๋ ๊ฒ์ด๋ผ๋ฉด,
- ๊ตณ์ด ์์ ๊ฐ์ด ๊ตฌํํ์ง ์์๋ ๊ฐ์ ์ญํ ์ ์ํํ ์ ์๋ค.
- Chain Of Responsibility๊ธ์ ํตํด ๋ณ๊ฒฝ๋ ๋ฐฉ์์ ํ์ธํ์.
ํ์ฉ์ฑ
- ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ ๊ฐ์ฒด ์งํฉ์ด ๋์ ์ผ๋ก ์ ์๋์ด์ผ ํ ๋
๊ฒฐ๊ณผ
- ๊ฐ์ฒด๊ฐ ํ๋์ ๊ฒฐํฉ๋๊ฐ ๋ฎ์์ง๋ค.
- ๋ค๋ฅธ ๊ฐ์ฒด๊ฐ ์ด๋ป๊ฒ ์์ฒญ์ ์ฒ๋ฆฌํ๋์ง ๋ชฐ๋ผ๋ ๋๋ค.
- ๊ทธ๋ฅ ๋๊ธฐ๊ณ , ๋๊ตฐ๊ฐ๊ฐ ์ฒ๋ฆฌํ ๊ฒ์ด๋ผ๋ ๊ฒ๋ง ํ์ ํ๋ฉด ๋๋ค.
- ์ฑ
์์ ๋๋ ๊ฐ์ง ์ ์๋ค.
- ๋จ๊ณ๋ณ๋ก ์ฒ๋ฆฌํด์ผ ํ๋ค๋ฉด, ๊ทธ ๋จ๊ณ๋ณ๋ก ํด๋์ค๋ฅผ ๋๋์ด ์ฑ ์์ ๋ถ์ฐํ ์ ์๋ค.
- ๋ฉ์์ง ์์ ์ด ๋ณด์ฅ๋์ง๋ ์๋๋ค.
๊ด๋ จ ํจํด๊ณผ ์ฐจ์ด์
- 24. Strategy: ์ด๋ป๊ฒ ๋์ํ๋ ๋ฐฉ๋ฒ์ ๋ถ๋ฆฌ
- 17. Command: ์ด๋ค ๋์์ ๋ถ๋ฆฌ
- 16. Chain of Responsibility: ๋ฉ์์ง ์์ ๊ณผ ์ก์ ์ ๋ถ๋ฆฌ
์๊ฐํด๋ณผ ์
- next๋ก ๋์ํ๋ ๋ฐฉ์์ด ์ข์๋ณด์ด์ง๋ ์๋๋ค.
- ๊ตณ์ด ์ ๋ ๊ฒ ๊ตฌํํ์ง ์์๋ ๋ ๋ฏํ๋ค.
- ํจํด์ ๋งค๋ชฐ๋์ง ๋ง์.