CS & OS ๐Ÿ–ฅ๏ธ

๋””์ž์ธ ํŒจํ„ด(Design pattern) - GoF

hae02y 2023. 2. 21. 01:10
๋ฐ˜์‘ํ˜•

๋””์ž์ธํŒจํ„ด์ด๋ž€?

๋””์ž์ธ ํŒจํ„ด์€ ๊ฐ ๋ชจ๋“ˆ์˜ ์„ธ๋ถ„ํ™”๋œ ์—ญํ• ์ด๋‚˜ ๋ชจ๋“ˆ๋“ค๊ฐ„์˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ˆ˜์ค€์˜ ์„ธ๋ถ€์ ์ธ ๊ตฌํ˜„ ๋ฐฉ์•ˆ์„ ์„ค๊ณ„ํ• ๋•Œ ์ฐธ์กฐํ• ์ˆ˜์žˆ๋Š” ์ „ํ˜•์ ์ธ ํ•ด๊ฒฐ๋ฐฉ์‹ / ์˜ˆ์ œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

๋””์ž์ธํŒจํ„ด์€ ๋ฌธ์ œ ๋ฐ ๋ฐฐ๊ฒฝ, ์‹ค์ œ ์ ์šฉ๋œ ์‚ฌ๋ก€, ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ์ƒ˜ํ”Œ ์ฝ”๋“œ ๋“ฑ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.

Don't reinvent the wheel ! (๋ฐ”ํ€ด๋ฅผ ๋‹ค์‹œ ๋ฐœ๋ช…ํ•˜์ง€๋งˆ๋ผ) ๋ผ๋Š” ๋ง๊ณผ ๊ฐ™์ด, ๊ฐœ๋ฐœ ๊ณผ์ •์ค‘์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒˆ๋กœ ํ•ด๊ฒฐ์ฑ…์„ ๊ตฌ์ƒํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ๋ฌธ์ œ์— ํ•ด๋‹นํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ํšจ์œจ์ ์ด๋‹ค.


GoF๋””์ž์ธํŒจํ„ด?

 

๋ฐฐ๊ฒฝ

๋…ผ๋ฌธ "Using Pattern Languages for Object-Oriented Programs" (1987)์„ ํ†ตํ•ด ์ œ์•ˆ๋˜์—ˆ๋‹ค. ์ดํ›„์— 23๊ฐœ์˜ ํŒจํ„ด์„ ์ˆ˜๋กํ•œ 'GoF'(Gang of Fours). Design Patterns: Elements of Reusable Object-Oriented Software. (1995) ๋ฅผ ํ†ตํ•ด ์œ ๋ช…์„ธ๋ฅผ ํƒ€๊ฒŒ๋˜์—ˆ๋‹ค.

 

ํ˜„์žฌ์—๋Š” ์ˆ˜์ฒœ์—ฌ๊ฐœ์˜ ํŒจํ„ด์ด ๋ฐœํ‘œ๋˜์—ˆ์œผ๋ฉฐ, ์ด๋Š” ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋น„์ค‘์ด ๋Š˜์–ด๋‚˜๋ฉด์„œ ์žฌ์‚ฌ์šฉ๊ด€์ ์—์„œ ์ƒํ˜ธ๊ฐ„ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•จ์œผ๋กœ ๋ณด์ธ๋‹ค.

 

 

 

1) ์ƒ์„ฑํŒจํ„ด(Creational Pattern)

๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ์ฐธ์กฐ๊ณผ์ •์„ ์บก์Šํ™” ํ•˜์—ฌ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋˜์–ด๋„ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์กฐ์— ์˜ํ–ฅ์„ ํฌ๊ฒŒ ๋ฐ›์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์— ์œ ์—ฐ์„ฑ์„ ๋”ํ•œ๋‹ค.

 

 

 

 

 

2) ๊ตฌ์กฐํŒจํ„ด(Structural Pattern)

ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ๋” ํฐ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค์ˆ˜์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํŒจํ„ด์ด๋‹ค. ์ด 7๊ฐœ๊ฐ€ ์žˆ์œผ๋ฉฐ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋„์™€์ค€๋‹ค.

 

 

 

3) ํ–‰์œ„ ํŒจํ„ด(Behavioral Pattern)

ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด๋“ค์ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‚˜ ์ฑ…์ž„ ๋ถ„๋ฐฐ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ํŒจํ„ด์œผ๋กœ ์ด 11๊ฐœ์˜ ํŒจํ„ด์ด ์žˆ๋‹ค. ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ์ˆ˜ํ–‰ํ• ์ˆ˜ ์—†๋Š” ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋กœ ๋ถ„๋ฐฐํ•˜๋ฉด์„œ ๊ฒฐํ•ฉ๋„๋ฅผ ์ตœ์†Œํ™”ํ• ์ˆ˜์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.

 

 

๋ฐ˜์‘ํ˜•