์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ๋””์ž์ธํŒจํ„ด ์ •๋ฆฌ

2024. 6. 25. 11:15ใ†โœ๏ธ

๋ฐ˜์‘ํ˜•

์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ ๋””์ž์ธํŒจํ„ด ์ •๋ฆฌ

 

 

 

 

 1๏ธโƒฃ ์ƒ์„ฑํŒจํ„ด (5) 

 

๊ธฐ์กด ์ฝ”๋“œ์˜ ์œ ์—ฐ์„ฑ๊ณผ ์žฌ์‚ฌ์šฉ์„ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋‹ค์–‘ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฉ”์ปค๋‹ˆ์ฆ˜๋“ค์„ ์ œ๊ณตํ•˜๋Š” ํŒจํ„ด

 

 

์ถ”์ƒ ํŒฉํ† ๋ฆฌ Abstract Factory

์ถ”์ƒํŒฉํ† ๋ฆฌ

  • ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์„œ๋กœ ๊ด€๋ จ๋œ ๊ฐ์ฒด ํŒจ๋ฐ€๋ฆฌ ์ƒ์„ฑ
  • ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ œ๊ณต
  • ๊ตฌ์ฒด์  ํด๋ž˜์Šค ์˜์กด ์—†์ด ๊ฐ์ฒด ์ƒ์„ฑ.

ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ Factory Method

ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ Factory Method

  • ์ƒ์œ„์—์„œ ๊ฐ์ฒด ์ธํ„ฐํŽ˜์ด์Šค ์ •์˜ํ•˜๊ณ  ํ•˜์œ„์—์„œ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
  • ์˜ค๋ฒ„๋กœ๋”ฉํ•˜์—ฌ ๊ฐ์ฒด ์ƒ์„ฑ ํด๋ž˜์Šค ๋ถ„๋ฆฌ
  • Virtual-Constructor ํŒจํ„ด๊ณผ ๋™์ผ

 

๋นŒ๋” Builder

๋นŒ๋” Builder

  • ๋ณต์žกํ•œ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ์ฒ˜๋ฆฌ
  • ๋‹ค์–‘ํ•œ ํ‘œํ˜„์„ ๊ฐ–๋Š” ๊ฐ์ฒด ์ƒ์„ฑ ๊ฐ€๋Šฅ
  • ๋ณต์žกํ•œ ์ƒ์„ฑ ๊ณผ์ •์„ ํ†ตํ•œ ์œ ์ง€๋ณด์ˆ˜์„ฑ ๋ฐ ํ™•์žฅ์„ฑ ํ–ฅ์ƒ.

 

ํ”„๋กœํ† ํƒ€์ž… Prototype

ํ”„๋กœํ† ํƒ€์ž… Prototype

  • ๊ธฐ์กด ๊ฐ์ฒด ๋ณต์ œ๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๊ฐ์ฒด ์ƒ์„ฑ
  • ํ”„๋กœํ† ํƒ€์ž… ์ƒ์„ฑ ํ›„ ์ธ์Šคํ„ด์Šค ๋ณต์ œ

์‹ฑ๊ธ€ํ†ค Singleton

  • ๋‹จ์ผ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๋ณด์žฅ
  • ์ „์—ญ ์ ‘๊ทผ ๊ฐ€๋Šฅ

 

 

 

 

 

 2๏ธโƒฃ ๊ตฌ์กฐ ํŒจํ„ด (7)

 

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

 

 

 

์–ด๋Œ‘ํ„ฐ Adapter

  • ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์ธํ„ฐํŽ˜์ด์Šค ํ†ตํ•ฉ
  • ํ•„์š”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ณ€ํ™˜ ๋ฐ ์žฌ์‚ฌ์šฉ
  • ์ธํ„ฐํŽ˜์ด์Šค ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ

๋ธŒ๋ฆฌ์ง€ Bridge

  • ์ถ”์ƒํ™”์™€ ๊ตฌํ˜„ ๋ถ„๋ฆฌ
  • ๋‘ ํด๋ž˜์Šค ๊ณ„์ธต ๋ถ„๋ฆฌ๋กœ ํ™•์žฅ ์šฉ์ด์„ฑ

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ Decorator

  • ๊ฐ์ฒด์— ๊ทธ๋•Œ๊ทธ๋•Œ ๋™์  ๊ธฐ๋Šฅ ์ถ”๊ฐ€
  • ์ƒ์† ์—†์ด ๊ธฐ๋Šฅ ์œ ์—ฐํ•˜๊ฒŒ ํ™•์žฅ
  • ํŠน์ˆ˜ ๋ž˜ํผ ๊ฐ์ฒด๋ฅผ ์—ฐ๊ฒฐ

ํŒŒ์‚ฌ๋“œ Facade

ํŒŒ์‚ฌ๋“œ Facade

  • ๋ณต์žกํ•œ ์‹œ์Šคํ…œ ๋‹จ์ˆœํ™”
  • ๋‹จ์ผ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์„œ๋ธŒ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ

๋ณตํ•ฉ์ฒด  Composite

๋ณตํ•ฉ์ฒด Composite

  • ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๊ฐ์ฒด ๊ตฌ์„ฑ
  • ๊ฐœ๋ณ„ ๋ฐ ์กฐํ•ฉ ๊ฐ์ฒด ์ผ๊ด€ ์ฒ˜๋ฆฌ

ํ”Œ๋ผ์ด์›จ์ดํŠธ Flyweight

ํ”Œ๋ผ์ด์›จ์ดํŠธ Flyweight

  • ๊ฐ์ฒด ๊ณต์œ ๋กœ ๋ฉ”๋ชจ๋ฆฌ(RAM) ์ ˆ์•ฝ
  • ์ž‘์€ํฌ๊ธฐ ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ

ํ”„๋ก์‹œ Proxy

ํ”„๋ก์‹œ Proxy

  • ํ”„๋ก์‹œ ๊ฐ์ฒด๋กœ ๋Œ€๋ฆฌ ์—ญํ• 
  • ๊ฐ์ฒด ์ ‘๊ทผ ์ œ์–ด ๋ฐ ์ค‘๊ฐœ
  • ๋Œ€์ฒด ํ˜น์€ ์ž๋ฆฌํ‘œ์‹œ์ž ์ œ๊ณต

 

 3๏ธโƒฃ ํ–‰์œ„ ํŒจํ„ด (11)

 

์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค ๋ฐ ๊ฐ์ฒด ๊ฐ„์˜ ์ฑ…์ž„ ํ• ๋‹น๊ณผ ๊ด€๋ จ๋œ ํŒจํ„ด

 

 

์ฑ…์ž„์—ฐ์‡„  Chain of Responsibility 

์ฑ…์ž„์—ฐ์‡„ Chain of Responsibility

  • ์š”์ฒญ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ ์ฒ˜๋ฆฌ์˜ ์—ฐ๊ฒฐ
  • ์ˆœ์ฐจ์  ์š”์ฒญ ์ „๋‹ฌ ๊ฒฐ์ •

์˜ต์ €๋ฒ„ Observer

์˜ต์ €๋ฒ„ Observer

  • ๊ฐ์ฒด ์ƒํƒœ ๋ณ€๊ฒฝ ๊ด€์ฐฐํ•˜๊ณ  ์ž๋™ ์•Œ๋ฆผ
  • ์ผ๋Œ€๋‹ค ์˜์กด ๊ด€๊ณ„

์ปค๋งจ๋“œ Command

์ปค๋งจ๋“œ Command

  • ์š”์ฒญ์„ ๊ฐ์ฒด๋กœ ์บก์Šํ™”
  • ์š”์ฒญ์ž์™€ ์ฒ˜๋ฆฌ์ž ๊ฐ๊ฐ ๋…๋ฆฝ์ 

์ƒํƒœ State 

์ƒํƒœ State

  • ๊ฐ์ฒด ์ƒํƒœ๋ฅผ ์บก์Šํ™”
  • ์›์‹œ์ฝ”๋“œ ์ˆ˜์ • ์ตœ์†Œํ™”

๋ฐ˜๋ณต์ž  Iterator

๋ฐ˜๋ณต์ž Iterator

  • ์ปฌ๋ ‰์…˜ ์š”์†Œ ์ˆœ์ฐจ ์ ‘๊ทผ ๋ฐ ์ฒ˜๋ฆฌ
  • ๋‚ด๋ถ€๊ตฌ์กฐ ๋…ธ์ถœ X

์ „๋žต Strategy 

์ „๋žต Strategy

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์บก์Šํ™” ๋ฐ ์„ ํƒ์  ์‹คํ–‰
  • ๋‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์„ ํƒํ•  ๋•Œ ์ ํ•ฉ

์ค‘์žฌ์ž Mediator

์ค‘์žฌ์ž Mediator

  • ๊ฐ์ฒด ๊ฐ„ ์ƒํ˜ธ ์ž‘์šฉ ์ค‘์•™ ์ง‘์ค‘ ๊ด€๋ฆฌ
  • ์˜์กด๊ด€๊ณ„ ์ค„์ด๊ณ  ์‰ฝ๊ฒŒ ํ˜‘๋ ฅํ•˜๋„๋ก ํ•จ

ํ…œํ”Œ๋ฆฟ ๋ฉ”์„œ๋“œ Template Method

ํ…œํ”Œ๋ฆฟ ๋ฉ”์„œ๋“œ Template Method

 

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•ต์‹ฌ ๊ตฌ์กฐ ์œ ์ง€
  • ํ•˜์œ„(์„œ๋ธŒ) ํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„ ์˜ค๋ฒ„๋ผ์ด๋“œ

๋ฉ”๋ฉ˜ํ†  Memento

๋ฉ”๋ฉ˜ํ†  Memento

  • ๊ฐ์ฒด ์ด์ „ ์ƒํƒœ ์ €์žฅ ๋ฐ ๋ณต์›
  • ์ž‘์—…์ทจ์†Œ undo ์š”์ฒญ

๋น„์ง€ํ„ฐ Visitor

๋น„์ง€ํ„ฐ Visitor

  • ๊ฐ์ฒด ๊ตฌ์กฐ ๋ณ€๊ฒฝ ์—†์ด ์ƒˆ ์—ฐ์‚ฐ ์ถ”๊ฐ€
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฆฌ
  • ๋Œ์•„๋‹ค๋‹ˆ๋ฉฐ ์ž‘์—… ์ˆ˜ํ–‰

์ธํ„ฐํ”„๋ฆฌํ„ฐ Interpreter

  • ๋ฌธ๋ฒ• ๊ทœ์น™์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฌธ์žฅ ํ•ด์„

 

 

 

๋นˆ์ถœ๋˜๋Š” ๋””์ž์ธ ํŒจํ„ด ์‹œํ—˜ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์—์„œ ํ‚ค์›Œ๋“œ ๋‹จ์œ„๋กœ ํ•™์Šตํ•˜์‹œ๊ณ 

๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ๋ณด๊ณ  ์‹ถ์œผ๋ฉด ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

 

* ํฌ์ŠคํŒ… ์ด๋ฏธ์ง€๋Š” refactoring.guru ๋‹˜์˜ ์ด๋ฏธ์ง€๋ฅผ ์ฐธ์กฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

 

 

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

 

refactoring.guru

 

๋ฐ˜์‘ํ˜•