[์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์ถ•] GoF(Gang of Four) ๋””์ž์ธ ํŒจํ„ด

2025. 10. 16. 16:47ยท๐Ÿ’ป CS/์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ

 

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

GoF(Gang of Four) ์ฒ˜์Œ ์ œ์•ˆํ•˜์—ฌ ๊ตฌ์ฒดํ™”

  • ์‹œ์Šคํ…œ์—์„œ ์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•œ ์ฐธ๊ณ  ๋ชจ๋ธ
  • ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์˜ ์„ค๊ณ„ ์‹œ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋ฐ˜๋ณต์  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
    โ€ป ์•„ํ‚คํ…์ฒ˜ ํŒจํ„ด : ์ „์ฒด ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ ์„ค๊ณ„

 

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

๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๊ณ„ํ•˜๋Š” ํŒจํ„ด

  • ํ”„๋กœ๊ทธ๋žจ์—์„œ ๊ฐ์ฒด๋ฅผ ์–ด๋–ป๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ์กฐํ•ฉํ• ์ง€๋ฅผ ๋‹ค๋ฃจ๋Š” ํŒจํ„ด
  • ๋‹จ์ˆœํžˆ new๋กœ ๋งŒ๋“œ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ, ์ƒํ™ฉ์— ๋งž๊ฒŒ ๊ฐ์ฒด ์ƒ์„ฑ ๊ณผ์ •์„ ์บก์Аํ™”ํ•˜๊ฑฐ๋‚˜, ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํ†ต์ผ์‹œ์ผœ์คŒ
Abstract Factory ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค์— ์˜์กดํ•˜์ง€ ์•Š๊ณ , ์„œ๋กœ ์—ฐ๊ด€๋˜๊ฑฐ๋‚˜ ์˜์กด์ ์ธ ๊ฐ์ฒด๋“ค์˜ ์ง‘ํ•ฉ์„ ์ƒ์„ฑํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต
Builder ๊ฐ์ฒด ์ƒ์„ฑ ๊ณผ์ •์„ ์บก์Аํ™”ํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์กฐ๋ฆฝํ•˜๋ฉฐ ์ƒ์„ฑ, ๋™์ผํ•œ ์ƒ์„ฑ ์ ˆ์ฐจ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ ์ œ๊ณต
Factory Method ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ๊ฐ์ฒด ์ƒ์„ฑ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ณ , ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ํด๋ž˜์Šค๋Š” ์„œ๋ธŒํด๋ž˜์Šค์—์„œ ๊ฒฐ์ •
Prototype ์›ํ˜•(Prototype) ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณต์ œํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
Singleton ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์˜ค์ง ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋„๋ก ๋ณด์žฅํ•˜๊ณ , ์ „์—ญ์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

 

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

ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด๋ฅผ ์กฐํ•ฉํ•ด ๋” ํฐ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ํŒจํ„ด

  • ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์กฐ(์ฆ‰, ํด๋ž˜์Šค ๊ฐ„ ๊ด€๊ณ„)๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ
  • ๊ฐ์ฒด๋“ค์ด ์–ด๋–ป๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ํ˜‘๋ ฅํ• ์ง€, ํ™•์žฅ ์‹œ ์ฝ”๋“œ ์ˆ˜์ •์„ ์ตœ์†Œํ™”ํ• ์ง€๋ฅผ ๋‹ค๋ฃธ
Adapter ๋น„ํ˜ธํ™˜ ์ธํ„ฐํŽ˜์ด์Šค์— ํ˜ธํ™˜์„ฑ์„ ๋ถ€์—ฌํ•˜๋„๋ก ๋ณ€ํ™˜. ๊ธฐ์กด ํด๋ž˜์Šค๋ฅผ ๊ฐ์‹ธ์„œ(wrapper) ์ธํ„ฐํŽ˜์ด์Šค ๋ณ€ํ™˜
Bridge ๊ตฌํ˜„๋ถ€์™€ ์ถ”์ƒ๋ถ€๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐ๊ฐ ๋…๋ฆฝ์ ์œผ๋กœ ๋ณ€๊ฒฝ/ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ
Composite ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๋ถ€๋ถ„/์ „์ฒด ๊ณ„์ธต์„ ํ‘œํ˜„, ๋ณตํ•ฉ ๊ฐ์ฒด์™€ ๋‹จ์ผ ๊ฐ์ฒด๋ฅผ ๋™์ผํ•˜๊ฒŒ ๋‹ค๋ฃธ
Decorator ์ƒ์† ๋Œ€์‹  ๊ฐ์ฒด์˜ ๊ฒฐํ•ฉ์„ ํ†ตํ•ด ๊ธฐ๋Šฅ์„ ๋™์ ์œผ๋กœ ํ™•์žฅ
Facade ๋ณต์žกํ•œ ์„œ๋ธŒ์‹œ์Šคํ…œ์„ ๋‹จ์ˆœํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ํ‘œํ˜„
Flyweight ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต์œ ํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝ (ํด๋ž˜์Šค ๊ฒฝ๋Ÿ‰ํ™”)
Proxy ์ ‘๊ทผ์ด ์–ด๋ ค์šด ๊ฐ์ฒด๋ฅผ ๋Œ€์‹  ์ œ์–ดํ•˜๋Š” ๋Œ€๋ฆฌ์ž ์—ญํ•  ์ˆ˜ํ–‰

 

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

๊ฐ์ฒด๋“ค ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ(ํ–‰๋™ ๋ฐฉ์‹)์„ ์ •์˜ํ•˜๋Š” ํŒจํ„ด

  • ํ”„๋กœ๊ทธ๋žจ ๋‚ด ๊ฐ์ฒด๋“ค์ด ์–ด๋–ป๊ฒŒ ํ˜‘๋ ฅํ•˜๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š”์ง€๋ฅผ ๋‹ค๋ฃธ
  • ๋กœ์ง ํ๋ฆ„, ์ œ์–ด, ์—ญํ•  ๋ถ„๋‹ด๊ณผ ๊ด€๋ จ๋œ ํŒจํ„ด
Chain of Responsibility ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๊ฐ€ ๋‘˜ ์ด์ƒ ์žˆ์„ ๋•Œ, ํ•œ ๊ฐ์ฒด๊ฐ€ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋‹ค์Œ ๊ฐ์ฒด๋กœ ์š”์ฒญ์„ ์ „๋‹ฌ
Command ์š”์ฒญ์„ ๊ฐ์ฒด๋กœ ์บก์Аํ™”ํ•˜์—ฌ ๋ช…๋ น์„ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”ํ•˜๊ณ  ํ์— ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋กœ๊ทธ์— ๊ธฐ๋ก ๊ฐ€๋Šฅ
Interpreter ์–ธ์–ด์˜ ๋ฌธ๋ฒ•์„ ํด๋ž˜์Šค ๊ตฌ์กฐ๋กœ ํ‘œํ˜„
Iterator ์ปฌ๋ ‰์…˜์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ  ์š”์†Œ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
Mediator ๊ฐ์ฒด ๊ฐ„ ๋ณต์žกํ•œ ์ƒํ˜ธ์ž‘์šฉ์„ ์บก์Аํ™”ํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์ฐธ์กฐํ•˜์ง€ ์•Š๋„๋ก ์ค‘์žฌ์ž ์—ญํ•  ์ˆ˜ํ–‰
Memento ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ
Observer ํ•œ ๊ฐ์ฒด์˜ ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์— ์ž๋™์œผ๋กœ ํ†ต๋ณด๋˜์–ด ๊ฐฑ์‹ ๋˜๋„๋ก ํ•จ
State ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ์ƒํƒœ์— ๋”ฐ๋ผ ๋™์ž‘์ด ๋‹ฌ๋ผ์ง€๋„๋ก ํ•จ
Strategy ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฐ์„ ์ •์˜ํ•˜๊ณ , ๊ฐ๊ฐ์„ ์บก์Аํ™”ํ•˜์—ฌ ๊ต์ฒด ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ
Template Method ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ , ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์„ธ๋ถ€ ๋‹จ๊ณ„๋ฅผ ๊ตฌํ˜„
Visitor ๊ฐ์ฒด ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ์—ฐ์‚ฐ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ

 

๋”๋ณด๊ธฐ

์ฐธ๊ณ 

๊ฟˆ๊พธ๋Š”๋ผ์ด์–ธ ์ •์ฒ˜๊ธฐ ์‹ค๊ธฐ ์š”์•ฝ๋…ธํŠธ

'๐Ÿ’ป CS > ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์šด์˜์ฒด์ œ] ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„  (0) 2025.10.22
[์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์ถ•] ๋ชจ๋“ˆ์˜ ๊ฒฐํ•ฉ๋„(Coupling)์™€ ์‘์ง‘๋„(Cohesion)  (0) 2025.10.21
[์ •๋ณด ๋ณด์•ˆ] ๋ณด์•ˆ ๊ณต๊ฒฉ ๊ธฐ๋ฒ•  (0) 2025.10.16
[์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์ถ•] ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€  (0) 2025.10.16
[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ํ‚ค์™€ ๋ฌด๊ฒฐ์„ฑ  (2) 2025.10.16
'๐Ÿ’ป CS/์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [์šด์˜์ฒด์ œ] ํ”„๋กœ์„ธ์Šค ์Šค์ผ€์ค„
  • [์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์ถ•] ๋ชจ๋“ˆ์˜ ๊ฒฐํ•ฉ๋„(Coupling)์™€ ์‘์ง‘๋„(Cohesion)
  • [์ •๋ณด ๋ณด์•ˆ] ๋ณด์•ˆ ๊ณต๊ฒฉ ๊ธฐ๋ฒ•
  • [์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์ถ•] ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€
0=2.
0=2.
  • 0=2.
    0=2
    0=2.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (104)
      • ๐Ÿ“‚ Project (2)
        • Paint the City (2)
      • ๐Ÿ’ญ Problem Solving (42)
        • C++ (28)
        • Java (14)
      • ๐Ÿ“ Study (17)
        • React (1)
        • Java (16)
      • ๐Ÿ’ป CS (11)
        • ๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ (2)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (9)
      • ๐Ÿƒ‍โ™€๏ธ Activities (32)
        • Web Front-End Basic Study (6)
        • 42 Cursus (26)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    42๊ฒฝ์‚ฐ
    ์ •๋ ฌ
    ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ
    ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    .h
    unity
    VR
    dfs
    La Piscine
    knapsack
    dynamic programming
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    swea
    CS
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ๊ตฌํ˜„
    ํŠธ๋ฆฌ
    CSS
    github
    ๋ฐฑ์ค€
    C
    makefile
    git
    ๋งต
    BFS
    HTML
    react
    java
    ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ๋ฐฑํŠธ๋ž˜ํ‚น
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
0=2.
[์†Œํ”„ํŠธ์›จ์–ด ๊ตฌ์ถ•] GoF(Gang of Four) ๋””์ž์ธ ํŒจํ„ด
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”