Skip to content

Latest commit

ย 

History

History
26 lines (15 loc) ยท 1.46 KB

Composite_Pattern.md

File metadata and controls

26 lines (15 loc) ยท 1.46 KB

Composite Pattern

Composite Pattern (์ปดํฌ์ง€ํŠธ ํŒจํ„ด)

Composite-Pattern

Part-Whole(๋ถ€๋ถ„-์ „์ฒด) ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด๋“ค์„ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ํŒจํ„ด

Client๊ฐ€ ๊ฐœ๊ฐœ์˜ ๊ฐ์ฒด(๋ถ€๋ถ„ ๊ฐ์ฒด)์™€ ๊ทธ๋ฃน ๊ฐ์ฒด(์ „์ฒด ๊ฐ์ฒด)๋ฅผ ๋™์ผํ•˜๊ฒŒ ์ทจ๊ธ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

๊ตฌ์„ฑ

  • Component - ๋ถ€๋ถ„ ๊ฐ์ฒด์™€ ์ „์ฒด ๊ฐ์ฒด์˜ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋กœ Child ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•จ
  • Leaf - ๋ถ€๋ถ„ ํด๋ž˜์Šค๋กœ, Composite ๊ฐ์ฒด์˜ ๋ถ€ํ’ˆ์œผ๋กœ ์„ค์ •๋˜๋ฉฐ Child ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์Œ
  • Composite - ์ „์ฒด ํด๋ž˜์Šค๋กœ, ๋ณต์ˆ˜ ๊ฐœ์˜ Component๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ณธ์ธ ๋˜ํ•œ Component์˜ ํŒŒ์ƒ ํด๋ž˜์Šค์ด๋‹ค. ๋”ฐ๋ผ์„œ, Child๋กœ ๋ณต์ˆ˜ ๊ฐœ์˜ Leaf์™€ ๋ณต์ˆ˜ ๊ฐœ์˜ Composite๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • Client - ๋ชจ๋“  ๊ฐ์ฒด๋“ค์„ ๋ถ€๋ถ„-์ „์ฒด ์—ฌ๋ถ€์™€ ๊ด€๊ณ„ ์—†์ด Component ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ์ด์šฉํ•˜๋Š” ๊ฐ์ฒด

์˜ˆ์‹œ

  • ๋ฆฌ๋ˆ…์Šค์˜ ๋””๋ ‰ํ† ๋ฆฌ-ํŒŒ์ผ ๊ตฌ์กฐ

    Composite-Pattern-Example

    ๋ฆฌ๋ˆ…์Šค๋Š” ๋””๋ ‰ํ† ๋ฆฌ, ์ผ๋ฐ˜ ํŒŒ์ผ(ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ์‹คํ–‰ ํŒŒ์ผ ๋“ฑ)๋“ค์„ ๋ชจ๋‘ ํŒŒ์ผ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋””๋ ‰ํ† ๋ฆฌ๋Š” ๋ณธ์ธ๋„ ํŒŒ์ผ์ž„๊ณผ ๋™์‹œ์— ํŒŒ์ผ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์—ฌ๊ธฐ์„œ ์ด๋“ค์„ ๋ชจ๋‘ ํ†ต์นญํ•˜๋Š” File์ด Component, File์— ํฌํ•จ๋˜๋ฉฐ File์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” Directory๊ฐ€ Composite, ์ผ๋ฐ˜์ ์ธ File์— ํ•ด๋‹นํ•˜๋Š” CommonFile์ด Leaf๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.