Skip to content

Latest commit

ย 

History

History
108 lines (89 loc) ยท 7.43 KB

File metadata and controls

108 lines (89 loc) ยท 7.43 KB

1์žฅ. ๋””์ž์ธ ํŒจํ„ด ์†Œ๊ฐœ์™€ ์ „๋žต ํŒจํ„ด

๋””์ž์ธ ์›์น™ (๊ฐ์ฒด์ง€ํ–ฅ ์›์น™)

  1. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋‹ฌ๋ผ์ง€๋Š” ๋ถ€๋ถ„์„ ์ฐพ์•„๋‚ด๊ณ , ๋‹ฌ๋ผ์ง€์ง€ ์•Š๋Š” ๋ถ€๋ถ„๊ณผ ๋ถ„๋ฆฌ(์บก์Šํ™”)ํ•œ๋‹ค.
  • ์ฝ”๋“œ์— ์ƒˆ๋กœ์šด ์š”๊ตฌ ์‚ฌํ•ญ์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค ๋ฐ”๋€Œ๋Š” ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.
  • ์‹œ์Šคํ…œ์˜ ์œ ์—ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.
  1. ๊ตฌํ˜„๋ณด๋‹ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ๋งž์ถฐ์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•œ๋‹ค.
  • ์ธํ„ฐํŽ˜์ด์Šค์— ๋งž์ถฐ์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ = ์ƒ์œ„ ํ˜•์‹(supertype)์— ๋งž์ถฐ์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • ๋งค์„œ๋“œ๋ฅผ ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ธฐ๋ณด๋‹ค ์ƒ์œ„ ํ˜•์‹์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๊ณ , ๋งค์„œ๋“œ ํ˜•์‹์— ๋งž์ถฐ์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•œ๋‹ค.
  • ์—ฌ๊ธฐ์„œ ์ƒ์œ„ ํ˜•์‹์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •(์˜ˆ๋ฅผ ๋“ค์–ด new Dog())์„ ์ถ”์ƒํ™”ํ•˜๊ณ  ์‹คํ–‰์‹œ์— ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค.
  1. ์ƒ์†๋ณด๋‹ค๋Š” ๊ตฌ์„ฑ(composition)์„ ํ™œ์šฉํ•œ๋‹ค.
  • ์œ ์—ฐ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  • (React์—์„œ๋„ ๊ฐ™์€ ์ด์œ ?)

๋””์ž์ธ ํŒจํ„ด ์‚ฌ์šฉ๋ฒ•

  • ์ด๋ฏธ ์„œ๋กœ ์•Œ๊ณ  ์žˆ๋Š” ํŒจํ„ด์„ ํ†ตํ•ด ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์†๋„๋ฅผ ํฌ๊ฒŒ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋””์ž์ธ ์ˆ˜์ค€์— ์ดˆ์ ์„ ๋งž์ถœ ์ˆ˜ ์žˆ๋‹ค.
  • ๋””์ž์ธ ํŒจํ„ด์ด ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•ด์„œ ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋ฉด, ๊ฐœ๋ฐœ์ž๋Š” ํŠน์ • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ๋งž๊ฒŒ ๋””์ž์ธ์„ ์ ์šฉํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • ๋””์ž์ธ ํŒจํ„ด์€ ํ”„๋ ˆ์ž„์›Œํฌ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ณด๋‹ค ๋†’์€ ๋‹จ๊ณ„์˜ ๊ฐœ๋…์ด๋‹ค.
  • ๊ฐ์ฒด์ง€ํ–ฅ ์‹œ์Šคํ…œ ๊ตฌ์ถ• ๋ฐฉ๋ฒ•์„ ๋ชจ์•„์„œ ๋งŒ๋“  ๊ฒƒ์ด ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค.
  • ๋””์ž์ธ ํŒจํ„ด์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๋ฉด ๊ฐ์ฒด์ง€ํ–ฅ ์›์น™(์ถ”์ƒํ™”, ์บก์Šํ™”, ๋‹คํ˜•์„ฑ ๋“ฑ)์„ ์ƒ๊ฐํ•˜๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋œ๋‹ค.

์ „๋žต ํŒจํ„ด (Strategy Pattern)

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ตฐ์„ ์ •์˜ํ•˜๊ณ  ์บก์Šํ™”ํ•ด์„œ ๊ฐ๊ฐ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ตฐ์„ ์ˆ˜์ •ํ•ด์„œ ์“ธ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.
  • ์ „๋žต ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ถ„๋ฆฌํ•ด์„œ ๋…๋ฆฝ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

2์žฅ. ์˜ต์ €๋ฒ„ ํŒจํ„ด

์šฉ์–ด ์ •๋ฆฌ

  • ์˜ต์ €๋ฒ„ ํŒจํ„ด(oberver pattern): ํ•œ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๊ทธ ๊ฐ์ฒด์— ์˜์กดํ•˜๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ์—ฐ๋ฝ์ด ๊ฐ€๊ณ  ์ž๋™์œผ๋กœ ๋‚ด์šฉ์ด ๊ฐฑ์‹ ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ, ์ผ๋Œ€๋‹ค ์˜์กด์„ฑ์„ ์ •์˜ํ•œ๋‹ค.
  • ์ฃผ์ œ(subject): ์ƒํƒœ(๋ฐ์ดํ„ฐ)๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด
  • ์˜ต์ €๋ฒ„(observer): ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚  ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ๊ฐ์ฒด
  • ๋Š์Šจํ•œ ๊ฒฐํ•ฉ(loose coupling): ๊ฐ์ฒด๋“ค์ด ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ ์„œ๋กœ๋ฅผ ์ž˜ ๋ชจ๋ฅด๋Š” ๊ด€๊ณ„.
  • publish-scribe pattern: ์„œ๋กœ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ๋ฉ”์„ธ์ง€์— ๊ด€์‹ฌ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ , ์—ญํ• ์„ ๋” ์„ธ์„ธํ•˜๊ฒŒ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด์œผ๋กœ, ๋ฏธ๋“ค์›จ์–ด ์‹œ์Šคํ…œ์—์„œ ๋งŽ์ด ์“ฐ์ธ๋‹ค.

ํ‘ธ์‹œ ๋ฐฉ์‹๊ณผ ํ’€ ๋ฐฉ์‹

  • ํ‘ธ์‹œ ๋ฐฉ์‹: ์ฃผ์ œ๊ฐ€ ์˜ต์ €๋ฒ„์—๊ฒŒ ์ƒํƒœ๋ฅผ ์•Œ๋ฆฌ๋Š” ๋ฐฉ์‹
public void update(float temperature, float humidity, float pressure) {
 this.temperature = temperature;
 this.humidity = humidity;
 display();
}
  • ํ’€ ๋ฐฉ์‹: ์ฃผ์ œ์—์„œ ์˜ต์ €๋ฒ„๊ฐ€ ์ƒํƒœ๋ฅผ ๋Œ์–ด์˜ค๋Š” ๋ฐฉ์‹
public void update() {
 this.temperature = weatherData.getTemperature();
 this.humidity = weatherData.getHumidity();
 display();
}

3์žฅ. ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด

  • ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด์„ ์‚ฌ์šฉํ•ด์„œ ์„œ๋ธŒํด๋ž˜์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ณด๋‹ค ์œ ์—ฐํ•˜๊ฒŒ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ธฐ๋ณธ ๊ตฌ์„ฑ ์š”์†Œ์™€๋Š” ๋‹ค๋ฅธ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ๋“ฑ์„ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์— ์ €์žฅํ•˜์—ฌ ์—ฐ๊ฒฐํ•œ๋‹ค.
  • ํ•„์š”ํ•œ ์ฝ”๋“œ์™€ ํด๋ž˜์Šค๊ฐ€ ๋งŽ์•„์ง„๋‹ค๋Š” ๋‹จ์ ์€ ํŒฉํ† ๋ฆฌ ๋ฐ ๋นŒ๋” ํŒจํ„ด์œผ๋กœ ๋ณด์™„ํ•œ๋‹ค.

4์žฅ. ํŒฉํ† ๋ฆฌ ํŒจํ„ด

5์žฅ. ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด

  • ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ ๋งŒ๋“ค๊ณ , ๊ทธ ์ธ์Šคํ„ด์Šค๋กœ์˜ ์ „์—ญ ์ ‘๊ทผ์„ ์ œ๊ณตํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ •์  ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ , getInstance์™€ ์ด ์ธ์Šคํ„ด์Šค์— ๊ฐ™์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. getInstance์—์„œ๋Š” ํ˜ธ์ถœํ•  ๋•Œ๊นŒ์ง€ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ๋ฏธ๋ฃฐ ์ˆ˜ ์žˆ๋‹ค. (lazy initialization)
  • ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ํ™˜๊ฒฝ์—์„œ ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ getInstance์— ๋™์‹œ์— ์ ‘๊ทผํ•˜๋ฉด, ์ธ์Šคํ„ด์Šค์˜ ์œ ์ผ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค. (์ž๋ฐ” ๊ธฐ์ค€) ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
    • (๋ณ‘๋ชฉ์„ ๊ฐ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด) ๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ฒŒ ํ•œ๋‹ค.
    • ์ธ์Šคํ„ด์Šค๋ฅผ ์ •์ ์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  lazy initialization์„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • DCL(Double-Checked Locking)์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • Python ๋ฒ„์ „...? ์ฐธ๊ณ 

6์žฅ. ์ปค๋งจ๋“œ ํŒจํ„ด

  • ์ž‘์—…์„ ๊ฐ์ฒด๋กœ ์บก์Šํ™”ํ•˜๊ณ , ์ž‘์—…์„ ์š”์ฒญํ•˜๋Š” ๊ฐ์ฒด์™€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ถ„๋ฆฌ (์˜ˆ: ๋ฆฌ๋ชจ์ปจ์—์„œ ์ž‘์—…์„ ์š”์ฒญํ•˜๋ฉด ๊ฐ ๊ธฐ๊ธฐ์—์„œ ์ž‘์—…์„ ์ฒ˜๋ฆฌ)
    • Command(์˜ˆ: ์ž‘์—…) : ๊ณตํ†ต ์ž‘์—… ์ธํ„ฐํŽ˜์ด์Šค, client๋“ค์€ ๋ฐ˜๋“œ์‹œ ์ด๋ฅผ ๊ตฌํ˜„ (์˜ˆ: execute, undo)
    • Client(์˜ˆ: ๊ธฐ๊ธฐ๋“ค) : ์›ํ•˜๋Š” ํ–‰๋™๋“ค๋กœ ๊ตฌ์„ฑ๋œ ์ปค๋งจ๋“œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ invoker์— ๋„˜๊ธฐ๊ธฐ (+ ๋‚˜์ค‘์— invoker์— ์˜ํ•ด ์‹คํ–‰๋จ)
    • Invoker(์˜ˆ: ๋ฆฌ๋ชจ์ปจ) : ์ปค๋งจ๋“œ๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณต, ์ปค๋งจ๋“œ์˜ ์‹คํ–‰์„ ์œ ๋ฐœ

7์žฅ. ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด๊ณผ ํผ์‚ฌ๋“œ ํŒจํ„ด

  • ์–ด๋Œ‘ํ„ฐ ํŒจํ„ด
    • ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ํ˜ธํ™˜๋˜์ง€ ์•Š์•„ ์‚ฌ์šฉ๋  ์ˆ˜ ์—†์—ˆ๋˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์–ด๋Œ‘ํ„ฐ ํด๋ž˜์Šค๋ฅผ ๋„์ž…
    • ๊ธฐ์กด ์ฝ”๋“œ๋ฅผ ํฌ๊ฒŒ ์ˆ˜์ •ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ํฐ ์žฅ์ 
  • ํผ์‚ฌ๋“œ ํŒจํ„ด
    • ์„œ๋ธŒ์‹œ์Šคํ…œ์— ์žˆ๋Š” ์ผ๋ จ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ฉ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋ฌถ์–ด ์ฃผ๋Š” ํŒจํ„ด
    • ํด๋ผ์ด์–ธํŠธ๋Š” ํ•˜๋‚˜์˜ ํ†ตํ•ฉ ์ธํ„ฐํŽ˜์ด์Šค์— ์—ฐ๊ฒฐ๋˜๋ฉฐ, ํ†ตํ•ฉ ์ธํ„ฐํŽ˜์ด์Šค๋Š” (ํด๋ผ์ด์–ธํŠธ ๋Œ€์‹ ) ๋ชจ๋“  ์„œ๋ธŒ์‹œ์Šคํ…œ์„ ๊ด€๋ฆฌ
    • ์ตœ์†Œ ์ง€์‹ ์›์น™(๋ฐ๋ฉ”ํ…Œ๋ฅด์˜ ๋ฒ•์น™): ๊ฐ์ฒด ์ž์ฒด, ๋ฉ”์†Œ๋“œ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋œ ๊ฐ์ฒด, ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“  ๊ฐ์ฒด, ๊ฐ์ฒด์— ์†ํ•˜๋Š” ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋ฉ”์†Œ๋“œ๋งŒ ํ˜ธ์ถœํ•˜๋ผ๋Š” ๊ฐ€์ด๋“œ๋ผ์ธ

8์žฅ. ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ ํŒจํ„ด

  • ์Šˆํผํด๋ž˜์Šค์˜ ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ๋Š” ์—ฌ๋Ÿฌ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ž‘์„ฑํ•œ๋‹ค.
  • ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ๋Š” ์Šˆํผํด๋ž˜์Šค์—์„œ ์ง์ ‘ ์ •์˜ํ•œ ๋ฉ”์†Œ๋“œ, ์ถ”์ƒ ๋ฉ”์†Œ๋“œ๋กœ์„œ ์„œ๋ธŒํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„ํ•˜๋Š” ๋ฉ”์†Œ๋“œ, ํ›…์œผ๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค.
  • ํ›…(hook)์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์•„๋ฌด์ผ๋„ ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ๋นˆ ๋ฉ”์†Œ๋“œ์ง€๋งŒ, ์„œ๋ธŒํด๋ž˜์Šค์—์„œ ์˜ค๋ฒ„๋ผ์ด๋“œํ•œ๋‹ค๋ฉด ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ์—์„œ ํ˜ธ์ถœํ•˜๋Š” ๋ฉ”์†Œ๋“œ ์™ธ์˜ ๋™์ž‘์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋ก ์ ์œผ๋กœ๋Š” ํด๋ž˜์Šค ์ƒ์†์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜์ง€๋งŒ, (์˜ค๋ฆฌ ์ •๋ ฌ๊ณผ ๊ฐ™์ด) ํด๋ž˜์Šค ์ƒ์†์ด ์•„๋‹Œ ๊ด€๊ณ„์—์„œ๋„ ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ ํŒจํ„ด์˜ ์•„์ด๋””์–ด๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํ• ๋ฆฌ์šฐ๋“œ ์›์น™ : ๊ณ ์ˆ˜์ค€ -> ์ €์ˆ˜์ค€ ๊ตฌ์„ฑ ์š”์†Œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ํ˜ธ์ถœํ•˜์—ฌ ๊ณ ์ˆ˜์ค€ ๊ตฌ์„ฑ ์š”์†Œ์™€ ์ €์ˆ˜์ค€ ๊ตฌ์„ฑ ์š”์†Œ ์‚ฌ์ด์— ์ˆœํ™˜ ์˜์กด์„ฑ์ด ์ƒ๊ธฐ์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค.

9์žฅ. ๋ฐ˜๋ณต์ž ํŒจํ„ด๊ณผ ์ปดํฌ์ง€ํŠธ ํŒจํ„ด

  • ๋ฐ˜๋ณต์ž(iterator) ํŒจํ„ด: ์—ฌ๋Ÿฌ ์ปฌ๋ ‰์…˜(collection)์ด ๊ฐ™์€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ - Python์€ ์–ธ์–ด๋ฅผ ๋งŒ๋“ค ๋•Œ ์ด ํŒจํ„ด์„ ์ผ๋‹ค๊ณ  ๋ณผ์ˆ˜๋„ ์žˆ๋Š”๊ฑด๊ฐ€?
  • ์ปดํฌ์ง€ํŠธ(composite) ํŒจํ„ด: ํŠธ๋ฆฌ ๊ตฌ์กฐ์—์„œ composite์™€ leaf๋Š” ๊ฐ™์€ component ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„
  • ์ปดํฌ์ง€ํŠธ ํŒจํ„ด์€ ํˆฌ๋ช…์„ฑ์„ ์œ„ํ•ด ๋‹จ์ผ ์—ญํ•  ์›์น™์„ ์–ด๋Š ์ •๋„ ํฌ์ƒํ•œ๋‹ค๊ณ  ๋ณผ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์–ด๋””๊นŒ์ง€ 'ํ•˜๋‚˜'์˜ ์—ญํ• ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์„๊นŒ?

10์žฅ. ์ƒํƒœ ํŒจํ„ด

  • ์ƒํƒœ(state) ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๊ณ  ๋ชจ๋“  ์ƒํƒœ๋Š” ์ด ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„

11์žฅ. ํ”„๋ก์‹œ ํŒจํ„ด

12์žฅ. ๋ณตํ•ฉ ํŒจํ„ด

13์žฅ. ์‹ค์ „ ๋””์ž์ธ ํŒจํ„ด

14์žฅ. ๊ธฐํƒ€ ํŒจํ„ด