๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ–ฅ dev-ruby

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] Design-Pattern ๋ณธ๋ฌธ

์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™

[์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™] Design-Pattern

ruby_s 2021. 12. 12. 02:18
728x90
๋ฐ˜์‘ํ˜•
SMALL

Preliminary design (์ƒ์œ„์„ค๊ณ„)

: ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ์ดํ„ฐ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜๋กœ ๋ณ€ํ™˜

Detailed design (์ƒ์„ธ์„ค๊ณ„)

: ์†Œํ”„ํŠธ์›จ์–ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‘œํ˜„์œผ๋กœ ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„ 

 

๊ธฐ์ˆ ์  ์ธก๋ฉด์—์„œ ์„ค๊ณ„

Data design

: ์ƒ์„ฑ๋œ ์ •๋ณด ์˜์—ญ ๋ชจ๋ธ์„ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋ณ€ํ™˜

Architectural design

: ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ฃผ์š” ๊ตฌ์กฐ์  ์ปดํฌ๋„ŒํŠธ ๊ฐ„์˜ ๊ด€๊ณ„์— ๋Œ€ํ•œ ์ •์˜

Procedural design

: ๊ตฌ์กฐ์  ์ปดํฌ๋„ŒํŠธ๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ ˆ์ฐจ์  ๋””์Šคํฌ๋ฆฝ์…˜์œผ๋กœ ๋ณ€ํ™˜

Interface design

: ์ธ๊ฐ„-๊ธฐ๊ณ„ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ๋ฐฐ์น˜ ๋ฐ ์ƒํ˜ธ ์ž‘์šฉ ๋ฉ”์ปค๋‹ˆ์ฆ˜์˜ ํ™•๋ฆฝ

 

Design Patterns

  • ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ์‚ฐ์ถœ๋ฌผ์„ ์žฌ์‚ฌ์šฉ : ์œ ์šฉํ•œ ์„ค๊ณ„์ •๋ณด๋ฅผ ํŒจํ„ด์œผ๋กœ ์ •์˜
  • ํŠน์ • ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ฐ˜๋ณต๋˜๋Š” ์†”๋ฃจ์…˜(๋…ธํ•˜์šฐ)์„ ์ผ์ •ํ•œ ํ˜•์‹์œผ๋กœ ์ •์˜ํ•œ ๊ฒƒ

์™œ ์„ค๊ณ„ ํŒจํ„ด?

  • ์„ค๊ณ„์ž๋“ค๊ฐ„์˜ ์˜์‚ฌ ์†Œํ†ต์˜ ์ˆ˜๋‹จ
  • ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜์กด์ ์ธ ๋ถ€๋ถ„์˜ ๋ถ„๋ฆฌ : ํ™•์žฅ์„ฑ ์ฆ๋Œ€
  • ๊ธฐ์กด ๋ชจ๋ธ์˜ ํ’ˆ์งˆ ํ–ฅ์ƒ
  • ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•˜์ง€๋งŒ ์ฝ”๋“œ๋Š” ๋ณ€๊ฒฝ์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ์ถค

 

Design Patterns์‘์šฉ

ํŠน์ • ํด๋ž˜์Šค์—์„œ ๊ฐ์ฒด ์ƒ์„ฑ์‹œ : ํด๋ž˜์Šค ์ด๋ฆ„์„ ๋ช…์‹œํ•˜๋ฉด ๊ตฌํ˜„์— ์ข…์†๋จ. -> ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ˜ธ์ถœ

์—ฐ์‚ฐ ์˜์กด์„ฑ : ํŠน์ • ์—ฐ์‚ฐ์„ ํ˜ธ์ถœํ•˜๋ฉด ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์ด ์—ฐ์‚ฐ์— ์˜์กด -> ์ปดํŒŒ์ผ ์‹œ์ ๊ณผ ๋Ÿฐํƒ€์ž„ ์‹œ์  ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋Š” ์š”์ฒญ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ๋ณ€๊ฒฝ

ํ”Œ๋žซํผ ์˜์กด์„ฑ : ํ”Œ๋žซํผ ์˜์กด์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์žฌ์‚ฌ์šฉ์„ฑ์ด ์ €ํ•˜๋จ -> ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์„ฑ

๊ฐ์ฒด ๊ตฌํ˜„ ํ˜น์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜์กด์„ฑ : ๊ฐ์ฒด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์‘์šฉ ๊ฐ์ฒด๋„ ๋ณ€๊ฒฝ -> ๊ตฌํ˜„ ๊ฐ์ฒด์™€ ์‘์šฉ ๊ฐ์ฒด ๋ถ„๋ฆฌ

์„œ๋ธŒ ํด๋ž˜์Šค๋ฅผ ํ†ตํ•œ ๊ธฐ๋Šฅ ํ™•์žฅ : ์ƒ์† ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ดํ•ด ํ•„์š” -> ์„œ๋ธŒ ํด๋ž˜์Šค๋ฅผ ํ™•์žฅํ•˜์ง€ ์•Š๊ณ , ๋‹ค๋ฅธ ๊ฐ์ฒด์™€์˜ ํ•ฉ์„ฑ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ ์ƒ์„ฑ

ํด๋ž˜์Šค ๋ณ€๊ฒฝ์˜ ์–ด๋ ค์›€ : ํ•œ ํด๋ž˜์Šค ๋ณ€๊ฒฝ์ด ๋‹ค์ˆ˜ ํด๋ž˜์Šค์— ์˜ํ–ฅ์„ ๋ฏธ์น  ๋•Œ -> ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค๋ฅผ ๋‘์–ด ๋ณ€๊ฒฝ ์˜ํ–ฅ์„ ์ตœ์†Œํ™”

 

1. ์ƒ์„ฑํŒจํ„ด

: ๊ฐ์ฒด ์ƒ์„ฑ ๊ด€๋ จ ํŒจํ„ด, ๊ฐ์ฒด ์ƒ์„ฑ, ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•œ ์‹œ์Šคํ…œ ์˜ํ–ฅ ์ตœ์†Œํ™”

factory method ํŒจํ„ด

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์™€ ์‹ค์ œ ๊ฐ์ฒด ์ƒ์„ฑ ํด๋ž˜์Šค๋ฅผ ๋ถ„๋ฆฌ

์ƒ์œ„ ํด๋ž˜์Šค : ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๋งŒ ๊ฒฐ์ •

ํ•˜์œ„ ํด๋ž˜์Šค : ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์‹œ์ ์€ ์•Œ์ง€๋งŒ, ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ• ์ง€ ์•Œ ์ˆ˜ ์—†์„ ๋•Œ, ๊ฐ์ฒด ์ƒ์„ฑ์„ ํ•˜์œ„ ํด๋ž˜์Šค์— ์œ„์ž„ํ•˜์—ฌ ํ•ด๊ฒฐ

 

singleton ํŒจํ„ด

: ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ์š”์†Œ๋งŒ ๊ฐ–๋Š” ์ง‘ํ•ฉ

ํŠน์ • ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ์˜ค์ง ํ•œ ๊ฐœ๋งŒ ์กด์žฌํ•˜๋„๋ก ๋ณด์žฅ

๋™์ผํ•œ ์ž์›์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ๋งŒ๋“ค์–ด์งˆ ํ•„ ์š”๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ์ฃผ๋กœ ์ด์šฉ

<<singleton>> ์œผ๋กœ ์Šคํ…Œ๋ ˆ์˜ค ํƒ€์ž… ์ •์˜

 

prototype ํŒจํ„ด

: ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณต์ œํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ

์ฒ˜์Œ๋ถ€ํ„ฐ ์ผ๋ฐ˜์ ์ธ prototype(์ธ์Šคํ„ด์Šค)์„ ๋งŒ๋“ค์–ด ๋†“๊ณ  ๊ทธ๊ฒƒ์„ ๋ณต์‚ฌํ•œ ํ›„ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ˆ˜์ •

<<prototype>> ์œผ๋กœ ์Šคํ…Œ๋ ˆ์˜ค ํƒ€์ž… ์ •์˜

 

builder ํŒจํ„ด

: ๋ณต์žกํ•œ ์ธ์Šคํ„ด์Šค๋ฅผ ์กฐ๋ฆฝํ•˜์—ฌ ๋งŒ๋“œ๋Š” ๊ตฌ์กฐ

๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ฐ์ฒด๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋ถ„๋ฆฌ

abstract factory ํŒจํ„ด

: ์—ฌ๋Ÿฌ ๊ฐœ์˜ concrete Product๋ฅผ ์ถ”์ƒํ™”์‹œํ‚จ ๊ฒƒ

๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„์€ concreteProduct ํด๋ž˜์Šค์—์„œ ์ด๋ฃจ์–ด์ง

์‚ฌ์šฉ์ž์—๊ฒŒ ์ธํ„ฐํŽ˜์ด์Šค(API)๋ฅผ ์ œ๊ณตํ•˜๊ณ , ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์‚ฌ์šฉํ•ด์„œ ๋ถ€ํ’ˆ์„ ์กฐ ๋ฆฝํ•˜์—ฌ ๋งŒ๋“ฆ

 

2. ๊ตฌ์กฐํŒจํ„ด

: ํ”„๋กœ๊ทธ๋žจ ๋‚ด์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌ์กฐ ๋“ฑ ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ ์„ค๊ณ„ ํŒจํ„ด

: ํด๋ž˜์Šค/๊ฐ์ฒด๋“ค์˜ ํ•ฉ์„ฑ์„ ํ†ตํ•ด์„œ ๋” ํฐ ๊ตฌ์กฐ๋ฅผ ์ƒ์„ฑ

: ๊ทœ๋ชจ๊ฐ€ ํฐ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝ์ด ์šฉ์ดํ•˜๋„๋ก ์ง€์›

 

composite ํŒจํ„ด

: ๋ถ€๋ถ„(Part) – ์ „์ฒด(Whole) ์ƒ์†๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ ํŒจํ„ด

์‚ฌ์šฉ์ž๊ฐ€ ๋‹จ์ผ ๊ฐ์ฒด์™€ ๋ณตํ•ฉ ๊ฐ์ฒด ๋ชจ๋‘ ๋™์ผํ•˜๊ฒŒ ๋‹ค๋ฃจ๋„๋ก ํ•œ ๊ฒƒ

์žฌ๊ท€์ ์ธ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์„ค๊ณ„ ํŒจํ„ด

์‚ฌ์šฉ ์˜ˆ์‹œ

- ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ณ ์ž ํ•  ๋•Œ

- ํšŒ์‚ฌ์˜ ์กฐ์ง๋„๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ ์ž ํ•  ๋•Œ

 

adapter ํŒจํ„ด

: ๊ธฐ์กด ํด๋ž˜์Šค๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ค‘๊ฐ„์—์„œ ๋งž์ถฐ์ฃผ๋Š” ์—ญํ• 

- ํ˜ธํ™˜์„ฑ์ด ์—†๋Š” ๊ธฐ์กด ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ณ€ํ™˜ํ•ด ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ ๋„๋ก ํ•จ

ํŒจํ„ด ํ˜•ํƒœ

  • ์ƒ์†์„ ์ด์šฉํ•œ ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด (ํด๋ž˜์Šค adapter ํŒจํ„ด)
  • ์œ„์ž„์„ ์ด์šฉํ•œ ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด (์ธ์Šคํ„ด์Šค adapter ํŒจํ„ด)

 

decorator ํŒจํ„ด

: ๊ธฐ์กด์— ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” ํด๋ž˜์Šค์— ๊ทธ๋•Œ ๊ทธ๋•Œ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด ๋‚˜๊ฐ€๋Š” ์„ค๊ณ„ํŒจํ„ด

๊ธฐ๋Šฅํ™•์žฅ์ด ํ•„์š”ํ•  ๋•Œ ์ƒ์†์˜ ๋Œ€์•ˆ์œผ๋กœ ์‚ฌ์šฉ

 

facade ํŒจํ„ด

: ๋ช‡ ๊ฐœ์˜ ํด๋ผ์ด์–ธํŠธ ํด๋ž˜์Šค์™€ ์„œ๋ธŒ์‹œ์Šคํ…œ์˜ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด์— facade ๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์„ธ์›Œ๋†“์Œ์œผ๋กœ์จ ๋ณต์žกํ•œ ๊ด€๊ณ„๋ฅผ ์ •๋ฆฌํ•œ ๊ฒƒ

๋ชจ๋“  ๊ด€๊ณ„๊ฐ€ ์ „๋ฉด์— ์„ธ์›Œ์ง„ facade ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด์„œ๋งŒ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๊ฒŒ ๋‹จ์ˆœํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต

facade ํŒจํ„ด์„ ์ด์šฉํ•˜๋ฉด ํด๋ž˜์Šค๊ฐ„์˜ ์˜์กด ๊ด€๊ณ„๊ฐ€ ์ค„์–ด๋“ค๊ณ  ๋ณต์žก์„ฑ๋„ ๋‚ฎ์•„์ง

 

proxy ํŒจํ„ด

: Proxy : ๋Œ€๋ฆฌ์ธ (๋ฌด์–ธ๊ฐ€๋ฅผ ๋Œ€์‹ ํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ)

๋ณต์žกํ•˜๊ฑฐ๋‚˜ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฐ์ฒด๋ฅผ ์ข€ ๋” ๊ฐ„๋‹จํ•œ ๊ฐ์ฒด๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ๊ฐ์ฒด ์ƒ์„ฑ์„ ๋ณด๋ฅ˜

๋ณ„๋„์˜ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‘์–ด ์šด์˜ํ•˜๋Š” ๊ฒƒ

 

3. ํ–‰์œ„ํŒจํ„ด

: ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ฒด๋“ค์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํŒจํ„ดํ™”

  • ํด๋ž˜์Šค/๊ฐ์ฒด์˜ ์ƒํ˜ธ์ž‘์šฉ ๋ฐฉ๋ฒ•๊ณผ ์ฑ…์ž„์— ๋Œ€ํ•œ ๋ถ„์‚ฐ ๋ฐฉ๋ฒ•
    • ๊ฐ์ฒด์˜ ๊ธฐ๋Šฅ์€ ๋ณ€ํ•˜์ง€ ์•Š์ง€๋งŒ ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ฌ๋ผ์งˆ ๋•Œ
    • ํ–‰์œ„๋ฅผ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ์˜ฎ๊ธฐ๊ฑฐ๋‚˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋Œ€์ฒดํ•˜๋Š” ๊ฒฝ์šฐ
    • ๋ฉ”์‹œ์ง€ ๊ตํ™˜๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ

iterator ํŒจํ„ด

: ๋ฐ˜๋ณต์ด ํ•„์š”ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋ชจ๋‘ ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ (๋ฐฐ์—ด, ๋ฆฌ์ŠคํŠธ, Set, Map ๋“ฑ)

๋ฐ์ดํ„ฐ๋“ค์˜ ์ง‘ํ•ฉ์ฒด๋ฅผ ๋ชจ๋‘ ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ์ž‘ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ

 

observer ํŒจํ„ด

: ์–ด๋–ค ํด๋ž˜์Šค์— ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚ฌ์„ ๋•Œ, ์ด๋ฅผ ๊ฐ์ง€ํ•˜์—ฌ ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ํ†ต๋ณด ํ•ด์ฃผ๋Š” ๊ฒƒ

์–ด๋–ค ์ผ์ด ์ƒ๊ธฐ๋ฉด ๋ฏธ๋ฆฌ ๋“ฑ๋กํ•œ ๊ฐ์ฒด๋“ค์—๊ฒŒ ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• 

 

strategy ํŒจํ„ด

: ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฐ์„ ์ •์˜ํ•˜๊ณ  ๊ฐ™์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋กœ ์บก์Šํ™”ํ•œ ๋‹ค์Œ, ํ•„์š”ํ•  ๋•Œ ์„œ๋กœ ๊ตํ™˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ

ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋‚˜ ๊ทธ ๊ตฌ์กฐ๋ฅผ ์ˆจ๊ฒจ์ฃผ๋Š” ์—ญํ• 

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ๊ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ œ๊ณตํ•˜๋Š” ๊ณณ์„ ๋ถ„๋ฆฌ์‹œํ‚จ ๊ตฌ์กฐ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋™์ ์œผ๋กœ ๊ต์ฒด ํ•  ์ˆ˜ ์žˆ์Œ

 

template method ํŒจํ„ด

: ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ๋Š” ์ถ”์ƒ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ  ๊ตฌ์ฒด์ ์ธ ๋‚ด์šฉ์€ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ๊ฒฐ์ •๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด

์ฝ”๋“œ ์–‘์„ ์ค„์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ์—ญํ• 

์œ ์‚ฌํ•œ ์„œ๋ธŒ ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉ

 

chain of responsibility  ํŒจํ„ด

: ์ฑ…์ž„๋“ค์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด ๋‚ด๊ฐ€ ์ฑ…์ž„์„ ๋ชป ์งˆ ๊ฒƒ ๊ฐ™์œผ๋ฉด ๋‹ค์Œ ์ฑ…์ž„์ž ์—๊ฒŒ ์ž๋™์œผ๋กœ ๋„˜์–ด๊ฐ€๋Š” ๊ตฌ์กฐ

์ž๋™์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋Š” ๊ตฌ์กฐ

- (์˜ˆ) ํ•™์ƒ ์ „ํ™” ์ƒ๋‹ด

  • ์ „ํ™” ๋ฐ›์€ ์‚ฌ๋žŒ์ด ๋‹ด๋‹น์ž๊ฐ€ ๋‹ฌ๋ผ์„œ ์ „ํ™”๋ฒˆํ˜ธ๋งŒ ์•Œ๋ ค์ฃผ๊ณ  ์ผ๋‹จ ์ „ํ™” ๋ฅผ ๋Š๊ณ  ๋‹ค์‹œ ๊ฑฐ๋Š” (a)์ •์  ๊ตฌ์กฐ
  • ๋‹ด๋‹น์ž๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ ์ „ํ™”๋ฅผ ๋Œ๋ ค์ฃผ ๋Š” (b)๋™์  ๊ตฌ์กฐ

 

mediator  ํŒจํ„ด

: ์ค‘๊ฐ„์—์„œ ์—ฐ๊ฒฐํ•˜๊ณ  ํ†ต์ œํ•˜๋Š” ์—ญํ• 

์ค‘์žฌ์ž์—๊ฒŒ ๋ชจ๋“  ๊ฒƒ์„ ์š”๊ตฌํ•˜์—ฌ ํ†ต์‹ ์˜ ๋นˆ๋„์ˆ˜๋ฅผ ์ค„์—ฌ ๊ฐ์ฒด์ง€ํ–ฅ์˜ ๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ

 

memento  ํŒจํ„ด

: ํด๋ž˜์Šค ์„ค๊ณ„ ๊ด€์ ์—์„œ ๊ฐ์ฒด์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ ์ ์šฉ

ํŒจํ„ด ์„ ํƒ

  • ํŒจํ„ด์ด ์–ด๋– ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”์ง€ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•œ๋‹ค.
  • ํŒจํ„ด์ด ์˜๋„ํ•˜๋Š” ๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€๋ฅผ ํ™•์ธํ•œ๋‹ค.
  • ๋น„์Šทํ•œ ๋ชฉ์ ์˜ ํŒจํ„ด์„ ๋ชจ์•„์„œ ์ดํ•ดํ•œ๋‹ค.
  • ์žฌ์„ค๊ณ„ ํ˜น์€ ํŒจํ„ด ์ ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๋ถ€๋ถ„์„ ์‹๋ณ„ํ•œ๋‹ค.
    • ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ–๋Š” ํด๋ž˜์Šค ์‹๋ณ„ ๋ฐ ํ™•์ธ
  • ํ•ด๋‹น ํŒจํ„ด์„ ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ๊ณผ ๋งคํ•‘ํ•ด ๋ณธ๋‹ค.
  • ๋Œ€์ฒด๋ฅผ ํ™•์ •ํ•˜๊ณ  ํŒจํ„ด์„ ์ ์šฉํ•œ๋‹ค.
    • ํ•„์š”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ˆ˜์ •ํ•œ๋‹ค. 
728x90
๋ฐ˜์‘ํ˜•
LIST