
๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์์ ๊ด์ ์์ ํต์ฌ์ ์ญํ (role), ์ฑ
์(responsibility), ํ๋ ฅ(collaboration)์ด๋ค.
ํด๋์ค, ์์, ์ง์ฐ ๋ฐ์ด๋ฉ์ด ์ค์ํ์ง ์์ ๊ฒ์ ์๋์ง๋ง ๋ค๋ถํ ๊ตฌํ ์ธก๋ฉด์ ์น์ฐ์ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์งํฅ ํจ๋ฌ๋ค์์ ๋ณธ์ง๊ณผ๋ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋ค.
๊ฐ์ฒด์งํฅ์ ๋ณธ์ง์ ํ๋ ฅํ๋ ๊ฐ์ฒด๋ค์ ๊ณต๋์ฒด๋ฅผ ์ฐฝ์กฐํ๋ ๊ฒ์ด๋ค. ๊ฐ์ฒด์งํฅ ์ค๊ณ์ ํต์ฌ์ ํ๋ ฅ์ ๊ตฌ์ฑํ๊ธฐ ์ํด ์ ์ ํ ๊ฐ์ฒด๋ฅผ ์ฐพ๊ณ ์ ์ ํ ์ฑ ์์ ํ ๋นํ๋ ๊ณผ์ ์์ ๋๋ฌ๋๋ค.

์ ๊ทธ๋ฆผ์์ ์ ์ ์๋ ๊ฒ์ฒ๋ผ ๊ฐ์ฒด์งํฅ ์์น์ ๋ฐ๋ฅด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ด ํ๋ฆ์ ์ด๋ค ํ๋์ ๊ฐ์ฒด์ ์ํด ํต์ ๋์ง ์๊ณ ๋ค์ํ ๊ฐ์ฒด๋ค ์ฌ์ด์ ๊ท ํ ์๊ฒ ๋ถ๋ฐฐ๋๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ค.
๊ฐ์ฒด๋ค์ด ์ ํ๋ฆฌ์ผ์ด์
์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด ์ํํ๋ ์ํธ์์ฉ์ ํ๋ ฅ์ด๋ผ๊ณ ํ๋ค.
๊ฐ์ฒด๊ฐ ํ๋ ฅ์ ์ฐธ์ฌํ๊ธฐ ์ํด ์ํํ๋ ๋ก์ง์ ์ฑ
์์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๊ฐ์ฒด๋ค์ด ํ๋ ฅ ์์์ ์ํํ๋ ์ฑ
์๋ค์ด ๋ชจ์ฌ ๊ฐ์ฒด๊ฐ ์ํํ๋ ์ญํ ์ ๊ตฌ์ฑํ๋ค.
๊ฐ์ฒด์งํฅ ์์คํ ์ ์์จ์ ์ธ ๊ฐ์ฒด๋ค์ ๊ณต๋์ฒด๋ค. ๊ฐ์ฒด๋ ๊ณ ๋ฆฝ๋ ์กด์ฌ๊ฐ ์๋๋ผ ์์คํ ์ ๊ธฐ๋ฅ์ด๋ผ๋ ๋ ํฐ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ๊ธฐ ์ํด ๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋ ฅํ๋ ์ฌํ์ ์ธ ์กด์ฌ๋ค. ๊ณ ๋ก ํ๋ ฅ์ ๊ฐ์ฒด์งํฅ์ ์ธ๊ณ์์ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด๋ค.
ํ๋ ฅ์ ์ํ ๋ ๊ฐ์ฒด ์ฌ์ด์ ๋ฉ์์ง ์ ์ก(message sending)์ ๊ฐ์ฒด ์ฌ์ด์ ํ๋ ฅ์ ์ํด ์ฌ์ฉํ ์ ์๋ ์ ์ผํ ์ปค๋ฎค๋์ผ์ด์ ์๋จ์ด๋ค.
๋ฉ์์ง๋ฅผ ์์ ํ ๊ฐ์ฒด๋ ๋ฉ์๋(Method)๋ฅผ ์คํํด ์์ฒญ์ ์๋ตํ๋ค. ์ฌ๊ธฐ์ ๊ฐ์ฒด๊ฐ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ ๋ฐฉ๋ฒ์ ์ค์ค๋ก ์ ํํ๋ค๋ ์ ์ด ์ค์ํ๋ค.
์์
Screening --- calcuateMovieFee(Screening) ---> Movie
Screening ๊ฐ์ฒด๊ฐ Movie์๊ฒ calculateMovieFee ๋ฉ์์ง๋ฅผ ์ ์กํจ ์ผ๋ก์จ Movie์๊ฒ ์๊ธ ๊ณ์ฐ์ ์์ฒญํ๋ค.
์ด๋ Movie๊ฐ ์๊ธ ๊ณ์ฐ์ ํ๋๋ฐ ํ์ํ ์ ์ฑ
, ์๊ธ ๋ฑ์ ์ ์๊ณ ์๊ธฐ๋๋ฌธ์ ์ฒ๋ฆฌ๋ฅผ ์์ํ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ์์ ์ด ํ ์ ์๋ ์ผ์ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์์ํ๋ฉด ํ๋ ฅ์ ์ฐธ์ฌํ๋ ๊ฐ์ฒด๋ค์ ์ ์ฒด์ ์ธ ์์จ์ฑ์ ํฅ์ ์ํฌ ์ ์๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์์จ์ ์ผ๋ก ๋ง๋ค๋ ค๋ฉด ๋ด๋ถ ๊ตฌํ์ ์บก์ํ ํด์ผํ๋ค.
์บก์ํ๋ฅผ ํ๋ฉด ๋ณ๊ฒฝ์ ๋ํ ํ๊ธํจ๊ณผ๋ฅผ ์ ํํ ์ ์๊ธฐ ๋๋ฌธ์ ์์จ์ ์ธ ๊ฐ์ฒด๋ ๋ณ๊ฒฝํ๊ธฐ๋ ์ฌ์์ง๋ค.
Screening์ด ์๊ธ์ ๊ณ์ฐํ๊ธฐ ์ํด Movie์ ๋ด๋ถ์ ์ง์ ์ ์ผ๋ก ์ ๊ทผํ๋ ๊ฒ์ ์บก์ํ์ ์์น์ ์๋ฐํ๋ ๊ฒ์ด๋ค. ๋ฐ๋ฉด, calculateMovieFee์ ๊ฐ์ด ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ฉด, Screening๊ณผ Movie ์ฌ์ด์ ๊ฒฐํฉ๋๋ฅผ ๋์จํ๊ฒ ์ ์งํ ์ ์๋ค.
๊ฐ์ฒด์ ์ํ๋ ๊ทธ ๊ฐ์ฒด๊ฐ ํ๋์ ์ํํ๋๋ฐ ํ์ํ ์ ๋ณด๊ฐ ๋ฌด์์ธ์ง๋ก ๊ฒฐ์ ๋๋ค. ์ฆ, ๊ฐ์ฒด์ ์ํ๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ํ๋์ด๋ค.
ํ๋ ฅ -> ํ๋ -> ์ํ๋ก ์ดํด ๊ฐ์ฒด๊ฐ ์ฐธ์ฌํ๋ ํ๋ ฅ์ด ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ํ๋๊ณผ ์ํ ๋ชจ๋๋ฅผ ๊ฒฐ์ ํ๋ค.
๊ฒฐ๊ณผ์ ์ผ๋ก ํ๋ ฅ์ ๊ฐ์ฒด๋ฅผ ์ค๊ณํ๋๋ฐ ํ์ํ ์ผ์ข
์ ๋ฌธ๋งฅ(Contecxt)์ ์ ๊ณตํ๋ค.
ํ๋ ฅ์ ์ฐธ์ฌํ๊ธฐ ์ํด ๊ฐ์ฒด๊ฐ ์ํํ๋ ํ๋์ ์ฑ ์์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ฑ ์์ด๋ ๊ฐ์ฒด์ ์ํด ์ ์๋๋๋ ์์ง๋ ์๋ ํ์์ ์งํฉ์ผ๋ก, ๊ฐ์ฒด๊ฐ ์ ์งํด์ผ ํ๋ ์ ๋ณด์ ์ํํ ์ ์๋ ํ๋์ ๋ํ ๊ฐ๋ต์ ๊ทธ์ฌ ์์ ํ ๋ฌธ์ฅ์ด๋ค.
์ฆ, ๊ฐ์ฒด์ ์ฑ ์
๊ฐ์ฒด๊ฐ '๋ฌด์์ ์๊ณ ์๋๊ฐ'
์ฌ์ ์ธ ์ ๋ณด์ ๊ดํด ์๋ ๊ฒ
๊ด๋ จ๋ ๊ฐ์ฒด์ ๊ดํด ์๋ ๊ฒ
์์ ์ด ์ ๋ํ๊ฑฐ๋ ๊ณ์ฐํ ์ ์๋ ๊ฒ์ ๊ดํด ์๋ ๊ฒ
๊ฐ์ฒด๊ฐ '๋ฌด์์ ํ ์ ์๋๊ฐ'
๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฑฐ๋ ๊ณ์ฐ์ ์ํํ๋ ๋ฑ์ ์ค์ค๋ก ํ๋ ๊ฒ
๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋์ ์์์ํค๋ ๊ฒ
๋ค๋ฅธ ๊ฐ์ฒด์ ํ๋์ ์ ์ดํ๊ณ ์กฐ์ ํ๋ ๊ฒ
์ํ ์๋งค ์์คํ
์์ Screening์ ์ฑ
์?
-> ์ํ๋ฅผ ์๋งคํ๋ ๊ฒ
Movie์ ์ฑ
์?
-> ์๊ธ์ ๊ณ์ฐํ๋ ๊ฒ
ํ๋ ฅ ์์์ ๊ฐ์ฒด์๊ฒ ํ ๋นํ ์ฑ ์์ด ์ธ๋ถ์ ์ธํฐํ์ด์ค์ ๋ด๋ถ์ ์์ฑ์ ๊ฒฐ์ ํ๊ฒ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฑ ์๊ณผ ๋ฉ์์ง์ ํฌ๊ธฐ๋ ๋ค๋ฅด๋ค. ์ฑ ์์ ๊ฐ์ฒด๊ฐ ์ํํ ์ ์๋ ํ๋์ ์ข ํฉ์ ์ด๊ณ ๊ฐ๋ตํ๊ฒ ์์ ํ๊ธฐ ๋๋ฌธ์ ๋ฉ์์ง๋ณด๋ค ์ถ์์ ์ด๊ณ ๊ฐ๋ ์ ์ผ๋ก๋ ๋ ํฌ๋ค.
์ค์ํ ์ฌ์ค
์ฑ
์์ ๊ด์ ์์ '์๋ ๊ฒ'๊ณผ 'ํ๋ ๊ฒ'์ด ๋ฐ์ ํ๊ฒ ์ฐ๊ด๋ผ ์๋ค๋ ์ ์ด๋ค. ๊ฐ์ฒด๋ ์์ ์ด ๋งก์ ์ฑ
์์ ์ํํ๋ ๋ฐ ํ์ํ ์ ๋ณด๋ฅผ ์๊ณ ์์ ์ฑ
์์ด ์๋ค. ๋ํ ๊ฐ์ฒด๋ ์์ ์ด ํ ์ ์๋ ์์
์ ๋์ ์ค ๊ฐ์ฒด๋ฅผ ์๊ณ ์์ ์ฑ
์์ด ์๋ค.
์ด๋ค ์ฑ
์์ ์ํํ๊ธฐ ์ํด์๋ ๊ทธ ์ฑ
์์ ์ํํ๋ ๋ฐ ํ์ํ ์ ๋ณด๋ ํจ๊ป ์์์ผ ํ ์ฑ
์์ด ์๋ ๊ฒ์ด๋ค.
์ฑ ์์ ๊ฐ์ฒด์งํฅ ์ค๊ณ์ ํต์ฌ์ด๋ค. ์ฌ์ค ํ๋ ฅ์ด ์ค์ํ ์ด์ ๋ ๊ฐ์ฒด์๊ฒ ํ ๋นํ ์ฑ ์์ ๊ฒฐ์ ํ ์ ์๋ ๋ฌธ๋งฅ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ ์ ํ ํ๋ ฅ์ด ์ ์ ํ ์ฑ ์์ ์ ๊ณตํ๊ณ , ์ ์ ํ ์ฑ ์์ ์ ์ ํ ๊ฐ์ฒด์๊ฒ ํ ๋นํด์ผ๋ง ๋จ์ํ๊ณ ์ ์ฐํ ์ค๊ณ๋ฅผ ์ฐฝ์กฐํ ์ ์๋ค.
์ง๊ธ๊น์ง ๋ด์ฉ์ ํต์ฌ์ ํ๋ ฅ์ ์ค๊ณํ๊ธฐ ์ํด์๋ ์ฑ
์์ ์ด์ ์ ๋ง์ถฐ์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
์ด์ฒ๋ผ ์ฑ
์์ ์ฐพ๊ณ ์ฑ
์์ ์ํํ ์ ์ ํ ๊ฐ์ฒด๋ฅผ ์ฐพ์ ์ฑ
์์ ํ ๋นํ๋ ๋ฐฉ์์ผ๋ก ์ค๊ณํ๋ ๋ฐฉ๋ฒ์ ์ฑ
์ ์ฃผ๋ ์ค๊ณ(Responsibility-Driven Design, RDD)๋ผ๊ณ ํ๋ค.
์ฑ ์ ์ฃผ๋ ์ค๊ณ ๋ฐฉ๋ฒ์ ๊ณผ์
์ฑ ์ ํ ๋น์ ๊ณ ๋ ค์ฌํญ 2๊ฐ์ง
๋ฉ์์ง๊ฐ ๊ฐ์ฒด๋ฅผ ๊ฒฐ์ ํ๋ค.
ํ๋์ด ์ํ๋ฅผ ๊ฒฐ์ ํ๋ค.
์บก์ํ๋ฅผ ์๋ฐํ์ง ์๊ธฐ ์ํด ๊ตฌํ์ ๋ค๋ก ๋ฏธ๋ฃจ๋ฉด์ ๊ฐ์ฒด์ ํ์๋ฅผ ๊ณ ๋ คํ๊ธฐ ์ํด์๋ ํญ์ ํ๋ ฅ์ด๋ผ๋ ๋ฌธ๋งฅ ์์์ ๊ฐ์ฒด๋ฅผ ์๊ฐํด์ผํ๋ค.
๋ง์ฝ ๊ฐ์ฒด์ ํ๋์ด ์๋ ์ํ์ ์ด์ ์ ๋ง์ถ๋ค๋ฉด ๊ฐ์ฒด์ ๋ด๋ถ ๊ตฌํ์ด ๊ฐ์ฒด์ ํผ๋ธ๋ฆญ ์ธํฐํ์ด์ค์ ๋
ธ์ถ๋๋๋ก ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ์ ์บก์ํ๋ฅผ ์ ํดํ๋ค. ์ด๋ฐ ์ค๊ณ ๋ฐฉ๋ฒ์ ๋ฐ์ดํฐ ์ฃผ๋ ์ค๊ณ(Data-Driven Design)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์ด๋ ์ฐ๋ฆฌ๊ฐ ์์์ ์์๋ณธ ์ฑ
์ ์ฃผ๋ ์ค๊ณ(RDD)์๋ ์๋ฐ๋๋ค.
๊ฐ๋ณ ๊ฐ์ฒด์ ์ํ์ ํ๋์ด ์๋ ์์คํ
์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํ ํ๋ ฅ์ ์ด์ ์ ๋ง์ถฐ์ผ๋ง ์์ง๋๊ฐ ๋๊ณ , ๊ฒฐํฉ๋๊ฐ ๋ฎ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋ค.
์ํ๋ ๋จ์ง ์ ์์ ์ธ ํ๋์ ์ํํ๊ธฐ ์ํ ์ฌ๋ฃ์ผ ๋ฟ์ด๋ค.
๊ฐ์ฒด๋ ํ๋ ฅ์ด๋ผ๋ ์ฃผ์ด์ง ๋ฌธ๋งฅ ์์์ ํน์ ํ ๋ชฉ์ ์ ๊ฐ๊ฒ ๋๋ค. ๊ฐ์ฒด์ ๋ชฉ์ ์ ํ๋ ฅ ์์์ ๊ฐ์ฒด๊ฐ ๋งก๊ฒ ๋๋ ์ฑ ์์ ์งํฉ์ผ๋ก ํ์๋๋ค. ์ด์ฒ๋ผ ๊ฐ์ฒด๊ฐ ์ด๋ค ํน์ ํ ํ๋ ฅ ์์์ ์ํํ๋ ์ฑ ์์ ์งํฉ์ ์ญํ ์ด๋ผ๊ณ ํ๋ค.
์๋ฅผ ๋ค์ด ์ํ ์๋งค ํ๋ ฅ์์ ์๋งคํ๋ผ๋ผ๋ ๋ฉ์์ง๋ฅผ ์ฒ๋ฆฌํ๊ธฐ์ ์ ํฉํ ๊ฐ์ฒด๋ก Screening์ ์ ํํ๋ค.
ํ๋์ ๋จ๊ณ์ฒ๋ผ ๋ณด์ด๋ ์ด ์ฑ
์ ํ ๋น ๊ณผ์ ์ ์ค์ ๋ก๋ ๋ ๊ฐ์ ๋
๋ฆฝ์ ์ธ ๋จ๊ณ๊ฐ ํฉ์ณ์ง ๊ฒ์ด๋ค.

๊ทธ๋ ๋ค๋ฉด ์ด๋ค ์ด์ ๋ก ์ญํ ์ด๋ผ๋ ๊ฐ๋ ์ ์ด์ฉํด์ ์ค๊ณ ๊ณผ์ ์ ๋ ๋ฒ๊ฑฐ๋กญ๊ฒ ๋ง๋๋ ๊ฒ์ผ๊น? ์ด์ฐจํผ ์ญํ ์ด ์์ด๋ ๊ฐ์ฒด๋ง์ผ๋ก ์ถฉ๋ถํ ํ๋ ฅ์ ์ค๊ณํ ์ ์๋ ๊ฑฐ ์๋๊ฐ?
์ญํ ์ด ์ค์ํ ์ด์
์ญํ ์ด๋ผ๋ ๊ฐ๋
์ ๊ณ ๋ คํ์ง ์๊ณ ๊ฐ์ฒด์๊ฒ ์ฑ
์์ ํ ๋นํ๋ค๊ณ ๊ฐ์ ํด๋ณด์.
Movie๊ฐ ๊ฐ๊ฒฉ์ ๊ณ์ฐํ๊ธฐ ์ํด์๋ ํ ์ธ ์๊ธ์ด ํ์ํ๋ค.
ํ ์ธ ์๊ธ์ ๊ณ์ฐํ๋ผ
๋ผ๋ ๋ฉ์์ง๋ฅผ ์ ์กํด์ ์ธ๋ถ์ ๊ฐ์ฒด์ ๋์์ ์์ฒญํ๋ค.
๊ธ์ก ํ ์ธ ์ ์ฑ
๊ณผ ๋น์จ ํ ์ธ ์ ์ฑ
์ด๋ผ๋ ๋ ๊ฐ์ง ์ข
๋ฅ์ ๊ฐ๊ฒฉ ํ ์ธ ์ ์ฑ
์ด ์กด์ฌํ๊ธฐ ๋๋ฌธ์ AmountDiscountPolicy, PercentDiscountPolicy0 ์ธ์คํด์ค ๋ ๊ฐ์ง ์ข
๋ฅ์ ๊ฐ์ฒด๊ฐ ํ ์ธ ์๊ธ์ ๊ณ์ฐํ๋ผ ๋ฉ์์ง์ ์๋ตํ ์ ์์ด์ผ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ ์ข
๋ฅ์ ๊ฐ์ฒด๊ฐ ์ฐธ์ฌํ๋ ํ๋ ฅ์ ๊ฐ๋ณ์ ์ผ๋ก ๋ง๋ค์ด์ผ ํ ๊น?

์๋๋ค!
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ๊ฐ์ฒด๊ฐ ์๋ ์ฑ
์์ ์ด์ ์ ๋ง์ถฐ์ผ ํ๋ค. ์์ํ๊ฒ ์ฑ
์์ ๊ด์ ์์ ๋ ํ๋ ฅ์ ๋ฐ๋ผ๋ณด๋ฉด ๋ ์ธ์คํด์ค ๋ชจ๋ ํ ์ธ ์๊ธ ๊ณ์ฐ์ด๋ผ๋ ๋์ผํ ์ฑ
์์ ์ํํ๋ค๋ ๊ฒ์ ์ ์ ์๋ค.
๋ฐ๋ผ์ ๊ฐ์ฒด๋ผ๋ ์กด์ฌ๋ฅผ ์ง์ฐ๊ณ ํ ์ธ ์๊ธ์ ๊ณ์ฐํ๋ผ๋ผ๋ ๋ฉ์์ง์ ์๋ตํ ์ ์๋ ๋ํ์๋ฅผ ์๊ฐํ๋ค๋ฉด ๋ ํ๋ ฅ์ ํ๋๋ก ํตํฉํ ์ ์์ ๊ฒ์ด๋ค. ์ด ๋ํ์๋ฅผ ํ๋ ฅ ์์์ ๋ ์ข
๋ฅ์ ๊ฐ์ฒด๋ฅผ ๊ต๋๋ก ๋ฐ๊ฟ ๋ผ์ธ ์ ์๋ ์ผ์ข
์ ์ฌ๋กฏ์ผ๋ก ์๊ฐํ ์ ์๋ค. ์ด ์ฌ๋ก์ด ๋ฐ๋ก ์ญํ ์ด๋ค.

์ฌ๊ธฐ์์ ์ญํ ์ด ๋ ์ข
๋ฅ์ ๊ฐ์ฒด๋ฅผ ํฌ๊ดํ๋ ์ถ์ํ์ด๋ค.
- ๋ง์ฝ ํ๋ ฅ์ ์ ํฉํ ์ฑ ์์ ์ํํ ๋์์ด ํ ์ข ๋ฅ๋ผ๋ฉด ๊ฐ์ฒด๋ก ๊ฐ์ฃผํ๋ค.
- ๋ง์ฝ ์ฌ๋ฌ ์ข ๋ฅ์ ๊ฐ์ฒด๋ค์ด ์ฐธ์ฌํ ์ ์๋ค๋ฉด ์ญํ ๋ก ๊ฐ์ฃผํ๋ค.