๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป ๊ฐœ๋ฐœ์ž ์ด์•ผ๊ธฐ/โœ๏ธ ์ •๋ฆฌ๋…ธํŠธ

[TIL] 2์žฅ ์‹ค์šฉ์ฃผ์˜ ์ ‘๊ทผ๋ฒ•

by ์ •์„ ํ•œ 2022. 5. 16.
728x90
๋ฐ˜์‘ํ˜•

2์žฅ ์‹ค์šฉ์ฃผ์˜ ์ ‘๊ทผ๋ฒ•

์˜ค๋Š˜์˜ TIL 3์ค„ ์š”์•ฝ

  • ์ฝ”๋“œ๋Š” ๋ฐ”๊พธ๊ธฐ ์‰ฝ๊ฒŒ ์ž˜ ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค.
  • ์Šค์Šค๋กœ์—๊ฒŒ ์งˆ๋ฌธํ•˜๊ณ  ๋‚ด๊ฐ€ ์˜ณ์€ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ€๊ณ ์žˆ๋Š”์ง€ ๊ณ ๋ฏผํ•ด์•ผ ํ•œ๋‹ค.
  • ์„ฃ๋ถˆ๋ฆฌ ๊ฒฐ์ •ํ•˜๊ฑฐ๋‚˜ ๋Œ€๋‹ตํ•˜๊ธฐ ๋ณด๋‹ค ๊ณ ๋ฏผํ•˜๊ณ  ๋‹ต์„ ๋„์ถœํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ๋งŒ ํ•œ๋‹ค.

1. ์ฑ…์—์„œ ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ

์ข‹์€ ์„ค๊ณ„๋Š” ๋‚˜์œ ์„ค๊ณ„๋ณด๋‹ค ๋ฐ”๊พธ๊ธฐ ์‰ฝ๋‹ค.
์ž˜ ์„ค๊ณ„๋œ ์ฝ”๋“œ๋Š” ๋ฐ”๋€œ์œผ๋กœ์จ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ๋งž์ถฐ์ ธ์•ผ ํ•œ๋‹ค. -39p

์Šค์Šค๋กœ ์ž๊พธ ๋ฌผ์–ด๋ณด๋ผ.
'๋‚ด๊ฐ€ ๋ฐฉ๊ธˆ ํ•œ ์ผ์ด ์ „์ฒด ์‹œ์Šคํ…œ์„ ๋ฐ”๊พธ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค์—ˆ์„๊นŒ, ์–ด๋ ต๊ฒŒ ๋งŒ๋“ค์—ˆ์„๊นŒ?'
ํŒŒ์ผ์„ ์ €์žฅํ•  ๋•Œ๋งˆ๋‹ค ๋ฌผ์–ด๋ณด๋ผ. ํ…Œ์ŠคํŠธ๋ฅผ ์“ธ ๋•Œ๋„, ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ๋„ ๋ฌผ์–ด๋ณด๋ผ. -40p

DRY (Don't Repeat Yourself.)
DRY๋Š” ์ง€์‹์˜ ์ค‘๋ณต, ์˜๋„์˜ ์ค‘๋ณต์— ๋Œ€ํ•œ ๊ฒƒ์ด๋‹ค. ๋˜‘๊ฐ™์€ ๊ฐœ๋…์„ ๋‹ค๋ฅธ ๊ณณ ๋‘ ๊ตฐ๋ฐ์—์„œ ํ‘œํ˜„ํ•˜๋ฉด ์•ˆ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. -43,44p

์ž์‹ ์˜ ํž˜์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์—†๋Š” ์†์„ฑ์— ์˜์กดํ•˜์ง€ ๋ง๋ผ.
๊ธฐ์ˆ ์„ ํ˜„๋ช…ํ•˜๊ฒŒ ์„ ํƒํ•˜๋ผ. -60p

์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋งˆ๋‹ค ์—ฌ๋Ÿฌ๋ถ„์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ง๊ต์„ฑ์„ ๋–จ์–ด๋œจ๋ฆด ์œ„ํ—˜์„ ๊ฐ์ˆ˜ํ•˜๋Š” ์…ˆ์ด๋‹ค. -61,62p
์ง๊ต์„ฑ์œผ๋ฅด ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•
1) ์ฝ”๋“œ์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ์ค„์—ฌ๋ผ.
 - ๋ถˆํ•„์š”ํ•œ ๊ฒƒ์€ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ๋ณด์—ฌ์ฃผ์ง€ ์•Š์œผ๋ฉฐ, ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ๊ตฌํ˜„์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ผ.
 - ๋ฐ๋ฉ”ํ…Œ๋ฅด ๋ฒ•์น™์„ ๋”ฐ๋ฅด๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋ผ.
2) ์ „์—ญ ๋ฐ์ดํ„ฐ๋ฅผ ํ”ผํ•˜๋ผ.
 - ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด(๋‹จ์ผ์ฒด ํŒจํ„ด : singleton pattern)
3) ์œ ์‚ฌํ•œ ํ•จ์ˆ˜๋ฅผ ํ”ผํ•˜๋ผ.
 - ์ „๋žต ํŒจํ„ด(strategy pattern)

์ตœ์ข… ๊ฒฐ์ •์ด๋ž€ ์—†๋‹ค.
์•„ํ‚คํ…์ฒ˜๊ฐ€ ๋ณ€๋•์Šค๋Ÿฌ์šด ํ™˜๊ฒฝ์—์„œ ์–ด๋–ป๊ฒŒ ๊ณ„ํš์„ ์„ธ์šธ ์ˆ˜ ์žˆ๊ฒ ๋Š”๊ฐ€? ๋ชปํ•œ๋‹ค.
์—ฌ๋Ÿฌ๋ถ„์ด ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ๋ฐ”๊พธ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. -60p

์˜ˆ๊ด‘ํƒ„ ์ฝ”๋“œ vs. ํ”„๋กœํ†  ํƒ€์ดํ•‘
ํ”„๋กœํ† ํƒ€์ž…์€ ๋‚˜์ค‘์— ๋ฒ„๋ฆฌ๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ ๋‹ค. ์˜ˆ๊ด‘ํƒ„ ์ฝ”๋“œ๋Š” ๊ธฐ๋Šฅ์€ ๋ณ„๋กœ ์—†์ง€๋งŒ ์™„๊ฒฐ๋œ ์ฝ”๋“œ์ด๋ฉฐ, ์ตœ์ข… ์‹œ์Šคํ…œ ๊ณจ๊ฒฉ ์ค‘ ์ผ๋ถ€๊ฐ€ ๋œ๋‹ค. ํ”„๋กœํ† ํƒ€์ž…์€ ์˜ˆ๊ด‘ํƒ„์„ ๋ฐœ์‚ฌํ•˜๊ธฐ ์ „์— ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๋Š” ์ •์ฐฐ์ด๋‚˜ ์ •๋ณด ์ˆ˜์ง‘๊ณผ ๊ฐ™์€ ๊ฒƒ์ด๋‹ค. -79p

๋ˆ„๊ตฐ๊ฐ€ ์ถ”์ •ํ•ด ๋‹ฌ๋ผ๊ณ  ํ•˜๋ฉด ๋ญ๋ผ๊ณ  ๋Œ€๋‹ตํ•ด์•ผ ํ• ๊นŒ?
"๋‚˜์ค‘์— ์—ฐ๋ฝ๋“œ๋ฆด๊ฒŒ์š”."๋ผ ๋งํ•ด์•ผ ํ•œ๋‹ค. -102p

2. ๊ถ๊ธˆํ•œ ๋‚ด์šฉ๊ณผ ์ž˜ ์ดํ•ด๋˜์ง€ ์•Š์€ ๋‚ด์šฉ์— ๋Œ€ํ•œ ์ •๋ฆฌ

@์žฅ์‹์ž ํŒจํ„ด (Decorator Pattern)
1) ๊ฐ์ฒด์˜ ๊ฒฐํ•ฉ์„ ํ†ตํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ๋™์ ์œผ๋กœ ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด.
2) ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ Decorator Class๋กœ ์ •์˜ํ•œ ํ›„, ํ•„์š”ํ•œ Decorator Object๋ฅผ ์กฐํ•ฉํ•˜์—ฌ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์„ค๊ณ„ํ•˜๋Š” ๋ฐฉ์‹.

@GoF์˜ ๋””์ž์ธ ํŒจํ„ด
1) ์ƒ์„ฑ ํŒจํ„ด (Creational Pattern)
2) ๊ตฌ์กฐ ํŒจํ„ด (Structural Pattern)
3) ํ–‰๋™ ํŒจํ„ด (Behavioral Pattern)

 

728x90
๋ฐ˜์‘ํ˜•