SlideShare a Scribd company logo
1 of 4
Download to read offline
์ž˜ ์“ฐ๋ฉด ์•ฝ, ๋ชป ์“ฐ๋ฉด ๋…

                                          ๋ฏธ์›Œ๋„ ๋‹ค์‹œ ๋ณด๋Š” ํŒจํ„ด ์ด์•ผ๊ธฐ
                            ์‹ค์ „ ๋…ธํ•˜์šฐ โ— ๋””์ž์ธ ํŒจํ„ด ํ™œ์šฉ
  ๊ฐœ๋ฐœ ๊ณ ์ˆ˜ 12์ธ์ด ๋งํ•˜๋Š”

                                           GoF ๋””์ž์ธ ํŒจํ„ด(Design Pattern)์„ ์‹œ์ž‘์œผ๋กœ ํ•ด์„œ ํŒจํ„ด์ด ์ด ์„ธ์ƒ์— ์•Œ๋ ค์ง„์ง€ ์–ด๋Š๋ง 10๋…„์ด ํ˜๋ €
                                           ๋‹ค. ํ•˜์ง€๋งŒ ๊ตญ๋‚ด์— ์ˆ˜๋งŽ์€ ํŒจํ„ด ๊ด€๋ จ ์ฑ…์ด ์ถœ๊ฐ„๋˜์–ด ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋˜๋Š” ํŒจ
                                           ํ„ด์˜ ์ˆ˜๋Š” ์—ฌ์ „ํžˆ ์†์— ๊ผฝ์„ ๋งŒํผ ์ ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ง€๊ธˆ์˜ ํ˜„์‹ค๊ณผ๋Š” ๋งž์ง€ ์•Š๋‹ค๊ณ  ํ‘ธ๋…ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค
                                           ๋„ ์žˆ๊ณ , ํŒจํ„ด์˜ ๋‚จ์šฉ์ด๋‚˜ ์˜ค์šฉ์œผ๋กœ ์ธํ•ด ์˜คํžˆ๋ ค ๋ถ€์ •์ ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ์ด๋“ค๋„ ์‰ฝ๊ฒŒ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด
                                           ๊ธ€์—์„œ๋Š” ๊ฐœ๋ฐœ์ž์˜ ์ž…์žฅ์—์„œ ํŒจํ„ด์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ์ƒ๊ฐ๋“ค์„ ๋ฐ”๋กœ ์žก์•„ ๋ณด๊ณ  ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ํ†ตํ•ด ๊ทธ ์˜ฌ๋ฐ”
                                           ๋ฅธ ์‚ฌ์šฉ๋ฒ•์„ ์ •๋ฆฌํ•ด ๋ณธ๋‹ค.




                                          ํ•„์ž๋Š” ๋ช‡ ๋…„ ์ „ ์–ด๋Š ์„ธ๋ฏธ๋‚˜์—์„œ GoF, POSA ๋“ฑ์˜ ํŒจํ„ด์— ๋Œ€ํ•ด ๋ฐœํ‘œํ•œ ์งํ›„,
                                                                                       โ€œํŒจํ„ด์ด ๋ญก๋‹ˆ
                                         ๊นŒ? ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”!โ€ ์งˆ๋ฌธ์„ ๋ฐ›์€ ์ ์ด ์žˆ๋‹ค. ๊ทธ ๋‹น์‹œ ์ž์„ธํ•œ ํŒจํ„ด ํ•˜๋‚˜ํ•˜๋‚˜๋Š” ๋ฌด์—‡
                                                        ๋ผ๋Š”
                                         ์ธ์ง€ ์•Œ๊ณ  ์žˆ๋Š” ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ •์ž‘ ์ „์ฒด์ ์ธ ๊ทธ๋ฆผ์ธ ํŒจํ„ด์˜ ์˜๋ฏธ๋ฅผ ๋ฌผ์–ด์˜จ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋Œ€๋‹ตํ•ด์•ผ ํ–ˆ
                                         ์„๊นŒ? ํ•„์ž๋Š” ๊ทธ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ๋‹ต์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๋จผ์ € ๊ทธ ์–ด์›์— ๋Œ€ํ•ด ์ ‘๊ทผํ•ด ๋ดค๋‹ค.


                                         ๋””์ž์ธ ํŒจํ„ด์ด๋ž€?
                                          ๋””์ž์ธ(Design)์€ De(away) + Sign(note)์ด๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ํ•ฉ์„ฑ๋œ ๋‹จ์–ด์ด๋‹ค. De์—๋Š”โ€˜๊ฐ€๋ณ
                                         ๊ฒŒโ€™ โ€˜ํ๋ฆฌ๋‹คโ€™
                                           ๋˜๋Š”   (away) ๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ๋‹ด๊ฒจ ์žˆ๊ณ , Sign์ด๋ผ๋Š” ๋ง์€ ํ‘œ์‹œ(note)๋ฅผ ๋‚จ๊ธด๋‹ค๋Š” ์˜๋ฏธ
                                         ๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค. ๋ฏธ์ˆ ์—์„œ ์กฐ๊ฐ์ƒ์„ ๊ทธ๋ฆด ๋•Œ ํ”ํžˆโ€˜๋ฐ์…ํ•œ๋‹คโ€™ ๋ง์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๋ฐ”๋กœ
                                                                         ๋ผ๋Š”
                                         ์ดโ€˜๋ฐ์…โ€™ ๋””์ž์ธ์€ ๊ฐ™์€ ์–ด์›์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์–ด๋–ค ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ธฐ ์ „์— ์‚ด์ง ๋ฐ‘๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š”
                                             ๊ณผ
                                         ๊ฒƒ์„ ๋ฐ์…์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด๋Š” ์™„๋ฒฝํ•œ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ธฐ ์ด์ „์— ํ˜•ํƒœ์™€ ๋ผˆ๋Œ€๋ฅผ ์žก๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.
                                         ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๋””์ž์ธ์ด๋ผ๋Š” ๋‹จ์–ด ์—ญ์‹œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ตฌ์กฐ์™€ ๋ผˆ๋Œ€๋ฅผ ์žก์•„๊ฐ€
                                         ๋Š” ์ž‘์—…์„ ์˜๋ฏธํ•œ๋‹ค.
                                          ์ด์–ด์„œโ€˜ํŒจํ„ด(Pattern)โ€™
                                                         ์ด๋ผ๋Š” ๋‹จ์–ด๋Š” ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ์˜์–ด์˜โ€˜Fatherโ€™
                                                                                 ์ด๋ผ๋Š” ๋‹จ์–ด์—์„œ ํŒŒ์ƒ๋œ
                                         ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์•„๋ฒ„์ง€์˜ ์–ผ๊ตด์ด๋‚˜ ์‹ ์ฒด์  ํŠน์„ฑ, ์„ฑ๊ฒฉ ๋“ฑ์„ ์ƒ๋‹น์ˆ˜ ๋ฌผ๋ ค๋ฐ›์€ ๊ฒƒ์ฒ˜๋Ÿผ, ์–ด




8
                                         ๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํŒจํ„ด์„ ์จ์„œโ€˜์ „์— ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ–ˆ์—ˆ์ง€โ€™ ์ƒ๊ฐ์„ ๊ฐ€์ง€๊ณ  ์œ ์‚ฌ
                                                                             ๋ผ๋Š”
                                         ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
                                          ๊ทธ๋Ÿผ ์ด์ œ ๋””์ž์ธ๊ณผ ํŒจํ„ด์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์กฐํ•ฉํ•ด ๋””์ž์ธ ํŒจํ„ด์˜ ์˜๋ฏธ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
                                                                                       โ€˜ํ”„๋กœ
                                         ๊ทธ๋žจ์ด๋ผ๋Š” ์ž‘ํ’ˆ์„ ๋งŒ๋“ค๊ธฐ ์ด์ „์— ๋ฐ˜๋ณต์ ์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ‘๊ทธ๋ฆผ์ด๋‚˜ ์Šค์ผ€์น˜ ๋“ฑ์„ ๋งˆ๋ จํ•ด๋‘
        ์†์˜์ˆ˜
        indigoguru@gmail.com
                                         ๋Š” ๊ฒƒโ€™์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋””์ž์ธ ํŒจํ„ด์˜ ์ •์˜๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
                                            .
        Microsoft MVP์™€ Devpia Architec
        ture&Design ์„น์…˜์˜ ์‹œ์‚ฝ์œผ๋กœ ํ™œ๋™ ์ค‘
                                         ํŒจํ„ด์— ๋Œ€ํ•œ ๋ถˆ์‹ ๋“ค
        ์ด๋‹ค. ๋ถ€์กฑํ•œ ์‹ค๋ ฅ์ด์ง€๋งŒ ๊ฐ€์ง„ ์ง€์‹์„
                                          ์ตœ๊ทผ ๋“ค์–ด ์ข…์ข… ํŒจํ„ด์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ถˆ๋งŒ ์„ž์ธ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋“ค์„ ์ˆ˜ ์žˆ๋‹ค. ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋‹ˆ ์˜ค
        ๊ณต์œ ํ•˜๋Š” ์ž์„ธ๋งŒํผ์€ ๋ˆ„๊ตฌ๋ณด๋‹ค ๋ถ€์ž๋ผ
        ๊ณ  ์žํ‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ง€๋‚œ 3๋…„๊ฐ„ ์†Œํ”„ํŠธ
                                         ํžˆ๋ ค ์„ฑ๋Šฅ์ด ๋” ๋‚˜๋น ์กŒ๋‹ค๊ฑฐ๋‚˜ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ ธ ์œ ์ง€ ๋ณด์ˆ˜ํ•˜๊ธฐ๊ฐ€ ๋” ํž˜๋“ค์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์ด ์ฃผ๋ฅผ ์ด
        ์›จ์–ด๊ณตํ•™์— ๊ด€๋ จ๋œ ์„ธ๋ฏธ๋‚˜์™€ ์Šคํ„ฐ๋””๋ฅผ
        ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” A&D Eva์˜ ๋ฆฌ๋”์ด๋‹ค.
                                         ๋ฃฌ๋‹ค. ์™œ ์ด๋Ÿฐ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์—ˆ์„๊นŒ? ์™„๋ฒฝํ•œ ๋ถ„์„์€ ์•„๋‹ˆ๊ฒ ์ง€๋งŒ ํ•„์ž์˜ ๊ฒฝํ—˜์— ๋น„์ถฐ ๊ทธ ์›
        ์„ธ๊ณ„์ ์ธ ํŒจํ„ด ํ•™ํšŒ์ธ PLOP์„ ๊ตญ๋‚ด์—
                                         ์ธ์„ ์„ค๋ช…ํ•ด ๋ณธ๋‹ค.
        ๋„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฟˆ์ด๋‹ค.



158 m a s o
์ž C๊ฐ€โ€˜์šธ๋ฉฐ ๊ฒจ์ž ๋จน๊ธฐโ€™ ํŠน๋ณ„ํ•œ ์ธ์ˆ˜์ธ๊ณ„ ์—†์ด ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋‘
                                                            ๋กœ
GoF์˜ 23๊ฐ€์ง€ ํŒจํ„ด์ด ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ค„ ๊ฒƒ์ด๋ž€ ์ž˜๋ชป๋œ ํ™˜์ƒ
 ๋งŽ์€ ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋“ค์€ GoF ํŒจํ„ด์ด ํŒจํ„ด์˜ ์‹œ์ž‘์ด๋ฉฐ ๋์ธ ๊ฒƒ์œผ            ๋ฅผ ๋– ๋งก๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ C๋Š” ํšŒ์‚ฌ์—์„œ ์ •ํ•ด ๋†“์€ ๋ฐ๋“œ๋ผ์ธ์„ ์ง€
๋กœ ์•Œ๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ตฌ์ƒ์—๋Š” ์†Œํ”„ํŠธ์›จ์–ด์™€ ์—ฐ๊ด€๋œ ๋‹ค์–‘ํ•œ              ํ‚ค๊ธฐ ์œ„ํ•ด ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ดํ•ด ์—†์ด ์ž์‹ ๋งŒ์˜ ์ฝ”๋“œ๋ฅผ ์งœ๊ฒŒ
์นดํ…Œ๊ณ ๋ฆฌ์˜ ์ˆ˜์‹ญ ๊ฐ€์ง€ ํŒจํ„ด ์„œ์ ์ด ๋‚˜์™€ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฑฐ๋Œ€ํ•œ            ๋˜๊ณ , ์‹ฌ์ง€์–ด ๋‹น์žฅ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด๋ถ€์— ์ž์‹ 
์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์žก์•„์ฃผ๋Š” ๊ตฌ์กฐ ํŒจํ„ด์„ ๋น„๋กฏํ•ด ๋ถ„์‚ฐ              ์ด ์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ์—ฌ๋Ÿฌ๋ถ„์ด ์ด ํ”„
์‹œ์Šคํ…œ์„ ์œ„ํ•œ ํŒจํ„ด, ๋ฆฌ์–ผํƒ€์ž„ ์‹œ์Šคํ…œ(Realtime System)์˜         ๋กœ๊ทธ๋žจ์˜ ๊ฐœ๋ฐœ ์—…๋ฌด๋ฅผ ์ธ์ˆ˜ ๋ฐ›์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๋ณด์ž. ์ƒ๊ฐ๋งŒ ํ•ด๋„
QoS๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ„ด, ๋ณด์•ˆ ํŒจํ„ด, ๋‹จ์œ„ ํ…Œ์ŠคํŒ…(Unit            ๋”์ฐํ•  ๊ฒƒ์ด๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด ํŒจํ„ด์— ์ต์ˆ™ํ•œ ๊ฐœ๋ฐœ์ž๋ผ๊ณ  ํ• ์ง€๋ผ๋„ ํ”„
Testing)์„ ์œ„ํ•œ ํŒจํ„ด, ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ๋Œ€๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ„ด          ๋ ˆ์ž„์›Œํฌ ์•ˆ์— ๋’ค์ฃฝ๋ฐ•์ฃฝ๋œ ์ฝ”๋“œ ํƒ“์— ์ƒ๋‹นํžˆ ๋งŽ์€ ์‹œ๊ฐ„ ๋™์•ˆ ๋ฆฌ
๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ด€๋ จ ์„œ์ ๋“ค์ด ์†Œ๊ฐœ๋˜์—ˆ๊ณ , 1994๋…„ ์ดํ›„ ๋งค๋…„ ๊ฐœ์ตœ          ํŒฉํ† ๋ง ์ž‘์—…์„ ํ•ด์•ผ ํ•  ๊ฒƒ์ด๊ณ , ๋˜ํ•œ ๋ง๋„ ์•ˆ ๋˜๋Š” ๋ฐ๋“œ๋ผ์ธ์ด ๋ˆˆ
๋˜๋Š” PLOP ํ•™ํšŒ์—์„œ๋„ ๋ฌด์ˆ˜ํ•œ ํŒจํ„ด๋“ค์ด ์Ÿ์•„์ ธ ๋‚˜์˜ค๊ณ  ์žˆ๋‹ค.             ์•ž์— ์žˆ๋‹ค๋ฉด ๋ฆฌํŒฉํ† ๋ง์€ ๊ณ ์‚ฌํ•˜๊ณ  ๋‹น์žฅ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ธฐ์œ„ํ•ด ๋”์šฑ
 ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ์–ด๋–ค ํŠน์ • ๋ฌธ์ œ์— ๋”ฑ ๋“ค์–ด๋งž๋Š” ํŒจํ„ด์„ 24๊ฐ€์ง€             ๋” ๊ผฌ์ธ ์ŠคํŒŒ๊ฒŒํ‹ฐ์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ตญ ํŒจ
์—์„œ ์ฐพ๊ธฐ๋ณด๋‹ค๋Š” ์ˆ˜์ฒœ ๊ฐ€์ง€ ํŒจํ„ด์—์„œ ์ฐพ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์œ ๋ฆฌํ•˜์ง€              ํ„ด์„ ์ž˜ ์•ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๊ทธ์— ๋Œ€ํ•œ ์ง€์‹์„ ์กฐ์ง๊ณผ ํŒ€ ๋‚ด์—์„œ ๋ชจ
์•Š์„๊นŒ? ๋ฌผ๋ก  ๋ช‡ ์ฒœ ๊ฐ€์ง€ ํŒจํ„ด์„ ์–ธ์ œ ์Šต๋“ํ•˜๋Š๋ƒ๊ณ  ๋ฐ˜๋ฐ•ํ• ์ง€๋„             ๋“  ๊ตฌ์„ฑ์›์ด ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•˜๊ณ  ๊ณต์œ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๋ชจ๋“  ๊ฒƒ์ด ๋ฌด
๋ชจ๋ฅด์ง€๋งŒ, ํ‹ˆํ‹ˆ์ด ๊ณต๋ถ€ํ•ด๋‘”๋‹ค๋ฉด ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ์ค„์ด๋Š” ๋ฐ ํฐ ๋„์›€์ด             ์šฉ์ง€๋ฌผ์ด ๋  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค.
๋  ๊ฒƒ์ด๋‹ค.
                                               ํŒจํ„ด์„ ๋ฐ”๋ผ๋ณด๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ž์„ธ
                                                ๋น„๋ก ๋ถ€์กฑํ•œ ๊ฒฝํ—˜์ด์ง€๋งŒ, ์ข€ ๋” ์‹ค๋ฌด์—์„œ ๋””์ž์ธ ํŒจํ„ด์„ ์ž˜ ์‚ฌ
์„ ๋ฌด๋‹น์ด ์‚ฌ๋žŒ ์žก๋Š”๋‹ค
 ๋งŒ์•ฝ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ œ์•ฝ์ด ์žˆ์œผ๋ฉด์„œ ๋น ๋ฅธ ์‘๋‹ต์†๋„๋ฅผ ์š”๊ตฌํ•˜๋Š” ์ž„              ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ช‡ ๊ฐ€์ง€ ์กฐ์–ธ์„ ์ œ์‹œํ•ด ๋ณธ๋‹ค.
๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ(Embedded System)์— ๋ณ€ํ™”์™€ ํ™•์žฅ์—๋Š” ์œ ์—ฐํ•˜
์ง€๋งŒ ์‘๋‹ต์†๋„๊ฐ€ ๋”๋”˜ ํŒจํ„ด(Component Configurator,         ๋‚˜๋ฌด๋ณด๋‹ค๋Š” ์ˆฒ์„ ๋ณด๋ผ(ํŒจํ„ด์„ ๋งŒ๋“œ๋Š” 5๊ฐ€์ง€ ๋ฒ•์น™ ํŒŒ์•…)
Pipe&Filter)๋“ค์„ ์—ฐ๋™ํ•ด ์ ์šฉ์‹œํ‚ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ํ”ํžˆ ํŒจํ„ด์˜         ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ํŒจํ„ด์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ƒ๊ฐํ•˜๋ฉด์„œ ๋งค์น˜
๋‚จ์šฉ์€ ๋Œ€๋ถ€๋ถ„ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์— ๋†“์—ฌ ์žˆ๋‹ค. ์ž์‹ ์ด ์•Œ๊ณ  ์žˆ๋Š” ํŒจํ„ด            ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ํŒจํ„ด์„ ๋งŒ๋“œ๋Š” 5๊ฐ€์ง€ ๋ฒ•์น™์— ์˜๊ฑฐํ•ด ์ƒ๊ฐํ•˜๊ธธ ๊ถŒ
์ด ์ด ๋ฌธ์ œ์— ์ ํ•ฉํ•ด ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ๋งŒ ๊ณ ๋ คํ•œ ๋‚˜๋จธ์ง€, ์ •์ž‘ ์‹œ์Šคํ…œ            ํ•œ๋‹ค(์งง์€ ํŽ˜์ด์ง€์— ํŒจํ„ด์„ ๋งŒ๋“œ๋Š” 5๊ฐ€์ง€ ๋ฒ•์น™์„ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์€
์ด ์ถ”๊ตฌํ•˜๋Š” QoS(Quality of Service)๋ฅผ ์ „ํ˜€ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ํŒจ   ๋งค์šฐ ์–ด๋ ค์šด ์ผ์ด๋ฏ€๋กœ, ํ•„์ž์˜ ์˜จ๋ผ์ธ ๋™์˜์ƒ ์ฐธ๊ณ ์ž๋ฃŒ๋ฅผ ํ™œ์šฉํ•˜
ํ„ด์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์‹ค์ œ ๋Œ€๋ถ€๋ถ„์˜ ํŒจํ„ด์ด ์ถ”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ์œ              ๊ธธ ๋ฐ”๋ž€๋‹ค). ์—ฌ๋Ÿฌ๋ถ„์ด Observer, Model-View-Controller, Pub
์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ ๊ทธ๋ฆฌ๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด์ง€๋งŒ, ์‹œ๊ฐ„์  ๋ฐ๋“œ๋ผ์ธ์„ ์š”              lisher-Subscriber, Event Channel ํŒจํ„ด์„ ๊ฐ๊ฐ ๋ณ„๊ฐœ์˜ ํŒจํ„ด์œผ
๊ตฌํ•˜๋Š” ๋ฆฌ์–ผํƒ€์ž„ ์‹œ์Šคํ…œ์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ CPU์˜ ์ œ์•ฝ์„ ๋ฐ›๋Š” ์ž„             ๋กœ ์ƒ๊ฐํ•œ๋‹ค๋ฉด, ๋ฌด์—‡๋ณด๋‹ค ํŒจํ„ด์„ ๋งŒ๋“œ๋Š” 5๊ฐ€์ง€ ๋ฒ•์น™์„ ์‚ดํŽด๋ณผ ํ•„
๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ ๋“ฑ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ๋‹ค์†Œ ๋ฌด๋ฆฌ๊ฐ€ ๋”ฐ๋ฅด๋Š” ํŒจํ„ด์ด              ์š”๊ฐ€ ์žˆ๋‹ค. ์ด ํŒจํ„ด๋“ค์€ ์‚ฌ์šฉ๋˜๋Š” ๋„๋ฉ”์ธ์€ ๋ชจ๋‘ ๋‹ค๋ฅด์ง€๋งŒ, DIP
์กด์žฌํ•จ์„ ์žŠ์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.                                (Dependency Inversion Principle, ์˜์กด ๊ด€๊ณ„ ์—ญ์ „์˜ ๋ฒ•์น™)์—
                                               ์˜๊ฑฐํ•˜๋ฉด ๋ชจ๋‘โ€˜์ˆ˜๋‹ค์Ÿ์ด ๊ฐ์ฒดโ€™ ๋งŒ๋‚  ๋•Œ ์ ์šฉ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
                                                              ๋ฅผ
๋ชจ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€ ํŒจํ„ด์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค
 ๋˜ ํ•˜๋‚˜์˜ ๋ฌธ์ œ๋Š” ํŒจํ„ด์„ ์ด์šฉํ•ด ์ถฉ๋ถ„ํ•œ ํ˜‘์—…์ด ๊ฐ€๋Šฅํ•  ๋งŒํผ              ํŒจํ„ด๊ฐ„์˜ ์—ฐ๊ด€์„ฑ์„ ์‚ดํŽด๋ณด๋ผ
๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋“ค์ด ํŒจํ„ด์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋Š” ์ ์ด๋‹ค. ์šฐ๋ฆฌ ์ฃผ์œ„์—               ํŒจํ„ด์€ ๊ฒฐ์ฝ” ๋…๋‹จ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด
๋น„์ผ๋น„์žฌํ•˜๊ฒŒ ์ผ์–ด๋‚˜๋Š” ํ•œ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ๋“ค๊ฒ ๋‹ค. GoF ํŒจํ„ด์„ ์ž˜ ์•„           ๋“ค์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ์‚ดํŽด๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค. Component Configurator,
๋Š” ๊ฐœ๋ฐœ์ž A๊ฐ€ ๋ณ€ํ™”์— ์œ ์—ฐํ•˜๋ฉด์„œ ํ™•์žฅ์ด ์ž์œ ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„              Reflection, Template Method(Strategy)๋Š” ํ•ญ์ƒ ํ•˜๋‚˜์˜ ๋ฌถ์Œ์œผ
๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ•˜์ž. ํ•˜์ง€๋งŒ ์–ด๋Š ๋‚  ๊ฐœ๋ฐœ์ž A๊ฐ€ ๋‹ค๋ฅธ ํŒŒํŠธ๋กœ ์ž๋ฆฌ            ๋กœ, Chain of Responsibility๋„ ์—ญ์‹œ Iterator ํŒจํ„ด๊ณผ ํ•จ๊ป˜ ์—ฐ๋™
๋ฅผ ์˜ฎ๊ธฐ๊ฒŒ ๋˜๋ฉด์„œ ๊ฐœ๋ฐœ์ž B๊ฐ€ A์˜ ์—…๋ฌด๋ฅผ ๋Œ€์‹  ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค. ํ•˜           ๋˜์–ด ์‚ฌ์šฉ๋œ๋‹ค.
์ง€๋งŒ ๊ณ ๊ธ‰ ํŒจํ„ด์„ ๋” ์ž˜ ์•Œ๊ณ  ์žˆ๋Š” B๋Š” ์ง€๊ธˆ์˜ ์ƒํ™ฉ์— ๊ทธ ๊ตฌ์กฐ๊ฐ€
์ ํ•ฉํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ํ–ฅํ›„ ์žฌํ™œ์šฉ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด A๊ฐ€ ๋งŒ๋“              ํŒจํ„ด์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ์›์น™์— ์˜๊ฑฐํ•œ๋‹ค.
๋ชจ๋“ˆ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋˜ ์ค‘์— ๊ฐ‘์ž‘์Šค๋ ˆ               ์–ด๋–ค ๊ด€์ ์—์„œ ๋ณด๋ฉด ํŒจํ„ด์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ์›์น™์— ์˜๊ฑฐํ•˜๊ณ  ์žˆ
B๊ฐ€ ํšŒ์‚ฌ๋ฅผ ๊ทธ๋งŒ๋‘๊ณ  ๋– ๋‚ฌ๋‹ค. ๊ทธ ํ›„ ํŒจํ„ด์— ์ต์ˆ™ํ•˜์ง€ ๋ชปํ•œ ๊ฐœ๋ฐœ            ๋‹ค. GoF ์„œ๋‘์— ๋‚˜์˜จ ์ด ๋‘ ์›์น™์„ ๊ณผ์†Œํ‰๊ฐ€ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ์ƒ


                                                                                           m a s o 159
๊ฐœ๋ฐœ ๊ณ ์ˆ˜ 12์ธ์ด ๋งํ•˜๋Š” ์‹ค์ „ ๋…ธํ•˜์šฐ_ ๋ฏธ์›Œ๋„ ๋‹ค์‹œ ๋ณด๋Š” ํŒจํ„ด ์ด์•ผ๊ธฐ




      ๊ฐ๋ณด๋‹ค ๋งŽ์ด ์กด์žฌํ•œ๋‹ค. ํŒจํ„ด๊ณผ ๊ด€๋ จ๋œ ์ฑ… ํ•œ ๊ถŒ์„ ์ฝ์€ ๊ฐœ๋ฐœ์ž๋ผ                         ๋ณ€ํ™”์— ์œ ์—ฐํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•œ๋‹ค. ์š”์ฆ˜
      ๋ฉด ์ด ๋‘ ๊ฐ€์ง€ ์›์น™์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์‚ดํŽด๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค. ๋‹ค์‹œ๊ธˆ ์ „์œจ                        ๋งŽ์€ ํ”Œ๋žซํผ์ด๋‚˜ ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(Metadata) ์ง€
      ์„ ๋Š๋ผ๊ฒŒ ๋˜๋Š” ์ˆœ๊ฐ„์„ ๋งž์ดํ•˜๊ฒŒ ๋ ๊ฒƒ์ด๋‹ค.                                     ํ–ฅ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋Œ€๋‘๋˜๊ณ  ์žˆ๋‹ค. ๋ณ€ํ™”๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ถ€๋ถ„
                                                                  (๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ ๊ต์ฒด, DB ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด ๋ณ€๊ฒฝ, ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† 
                                                                  ์ฝœ)๋“ค์„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ๊ธฐ์ˆ ํ•จ์œผ๋กœ์จ, ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜์ • ์—†์ด ๋ณ€
      โ— 1์›์น™ : Program to an interface, not to an implementation
       โ€˜์ธํ„ฐํŽ˜์ด์Šค(๊ณ„์•ฝ) ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ด๋ผ.โ€™์ง€๊ธˆ ํ•œ๋ฒˆ ๋””                          ํ™”์— ๋น ๋ฅด๊ฒŒ ๋Œ€์ฒ˜ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๊ณผ
      ์ž์ธ ํŒจํ„ด ์„œ์ ์„ ํŽผ์ณ๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค. ๋ชจ๋“  ํŒจํ„ด๋“ค์ด ์ถ”์ƒ ํด๋ž˜์Šค                          ์ •์—์„œ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•œ๋‹ค. ํŒŒ์ผ(file)์— ์„ค์ • ์ •๋ณด๊ฐ€
      (Abstract Class)๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค(Interface)๋กœ๋ถ€ํ„ฐ ์ƒ์†์„ ๋ฐ›๊ณ                 ์žˆ๋‹ค ๋ณด๋‹ˆ ์ž์ฃผ ์ฝ์–ด ๋“ค์ด๋Š” ๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์—๋Š” ํŒŒ์ผ ์ ‘๊ทผ์„ ์œ„ํ•ด
      ์žˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹คํ˜•์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด                          ์ง€๋‚˜์น˜๊ฒŒ ๋นˆ๋ฒˆํ•œ I/O๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๋น ๋ฅธ ์‘๋‹ต์†๋„
      ์Šค(Interface)๋ฅผ ์ƒ์†๋ฐ›์€ ๊ฐ์ฒด๋ผ๋ฉด ๋Ÿฐํƒ€์ž„(Runtime)์‹œ์— ์–ธ์ œ                   ๋‚˜ ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ์„ฑ๋Šฅ ์ €ํ•˜
      ๋“ ์ง€ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ •๋ ฌ ์•Œ                         ์˜ ์ฃผ๋œ ์›์ธ์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์„ค์ • ํŒŒ์ผ(App.Config ๋˜๋Š”
      ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ Quick Sorting์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ๋ˆ„๊ตฐ๊ฐ€ ๋” ๋น ๋ฅธ Super                  Web.Config)์˜ ์ •๋ณด๋ฅผ ๊ณ ์Šค๋ž€ํžˆ ๋“ค๊ณ  ์žˆ๋Š” Configuration
      Quick Sorting ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐœ๋ฐœํ–ˆ๋‹ค๊ณ  ํ•˜์ž.                               Handler๋ฅผ <๋ฆฌ์ŠคํŠธ 1>์ฒ˜๋Ÿผ ๋งŒ๋“ค๊ณ , ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋”ฉํ•  ๋•Œ
        ์ด ๋‘ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ์‹œ                         Handler์—์„œ ์„ค์ • ํŒŒ์ผ์˜ ์ •๋ณด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ
      ์Šคํ…œ์˜ ์ค‘์ง€ ์—†์ด ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ƒ์†(๊ณ„                         ๋ฉด ํด๋ผ์ด์–ธํŠธ(Client)๋“ค์ด Handler๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์–ป์–ด์˜ค๊ฒŒ ๋˜
      ์•ฝ ๊ธฐ๋ฐ˜)์ด ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ๊ฐ ๊ฐ์ฒด๊ฐ€ ์ง€๋‹Œ ํ‘œํ˜„์˜ ์ž์œ ๋ฅผ ์–ต์••ํ•˜๋Š”                         ๋ฏ€๋กœ, ํŒŒ์ผ I/O์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.
      ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋Ÿฐ ์•ฝ๊ฐ„์˜ ์–ต์••์œผ๋กœ ์ธํ•ด ์ž์œ ๋กญ๊ฒŒ
                                                                   <๋ฆฌ์ŠคํŠธ 1> ์„ค์ • ํŒŒ์ผ์˜ ์ •๋ณด๋ฅผ ์ฝ์–ด์˜ค๋Š” Handler์˜ ์˜ˆ - .NET ์šฉ
      ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์„ ์–ป์€ ๊ฒƒ์€ ๋ถ„๋ช…ํ•˜๋‹ค. ์‚ฌ์‹ค ๋ชจ๋“  ํŒจํ„ด์ด
                                                                   using System.Collections.Specialized;
      Strategy๋‚˜ Template Method ํŒจํ„ด์„ ์•ฝ๊ฐ„ ๋ณ€ํ˜•ํ–ˆ๋‹ค๊ณ  ํ•ด๋„ ๊ณผ
                                                                   using Microsoft.ApplicationBlocks.ExceptionManagement;
      ์–ธ์€ ์•„๋‹ ๊ฒƒ์ด๋‹ค.
                                                                   public class WebAppConfig
                                                                   {
      โ— 2์›์น™ : Favor Object Composition over Class Inheritance          private static string mSiteName;
       โ€˜ํด๋ž˜์Šค ์ƒ์†(Class Inheritance)๋ณด๋‹ค๋Š” ๊ฐ์ฒด ์กฐํ•ฉ์„ ์„ ํ˜ธํ•ด                        private static string mConnectString;
                                                                       static WebAppConfig()
      ๋ผ.โ€™ ๋‘ ๋ฒˆ์งธ ์›์น™์€ ํ˜„์žฌ ๋งŽ์€ ๋…ผ๋ž€์„ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค. ์‹ฌ์ง€์–ด ๊ตญ
         ์ด
                                                                       {
      ๋‚ด์™ธ์˜ ๋ช‡ ๊ฐ€์ง€ ์„œ์ ๋“ค์€ ์ด ๋‘ ๋ฒˆ์งธ ์›์น™์˜ ์˜๋ฏธ๋ฅผ ์ œ๋Œ€๋กœ ๋ถ„์„                                  NameValueCollection nvc = new
                                                                   NameValueCollection();
      ํ•˜์ง€ ์•Š์€ ์ฑ„,
             โ€˜์ƒ์†๋ณด๋‹ค๋Š” ์กฐํ•ฉ์„ ์„ ํ˜ธํ•˜๋ผโ€™ ๊ทน๋‹จ์ ์ธ ํ‘œํ˜„์„
                            ๋Š”
                                                                           try {
      ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค. GoF์— ๋‚˜์˜ค๋Š” ๋ชจ๋“  ํŒจํ„ด์ด ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ                                 // GetConfig ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด web.config์— ๋“ฑ๋ก๋œ ํด๋ž˜์Šค ๋‚ด์˜
      ์ƒ์†์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๋Š” ์˜๋ฏธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐ›์•„๋“ค์—ฌ์•ผ ํ• ๊นŒ? GoF                                  // Create method๊ฐ€ ํ˜ธ์ถœ๋˜์–ด NameValueCollection ๊ฐ์ฒด๋ฅผ
                                                                          // ๋˜๋Œ๋ฆฐ๋‹ค.
      ๋””์ž์ธ ํŒจํ„ด์ด ๋“ฑ์žฅํ•œ ์‹œ๋Œ€์  ๋ฐฐ๊ฒฝ์„ ๊ณ ๋ คํ•˜๋ฉด ์ด๋Š” ์˜์™ธ๋กœ ๊ฐ„๋‹จ
                                                                   nvc =
      ํ•ด์ง„๋‹ค. ๋‹น์‹œ ์ด ์›์น™์€ C++๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์“ฐ์˜€๋˜ ํ„ฐ๋ผ ์ธํ„ฐํŽ˜์ด                          (NameValueCollection)System.Configuration.ConfigurationSet
                                                                   tings.GetConfig(quot;AppConfigquot;);
      ์Šค๋ผ๋Š” ๋ช…์‹œ์ ์ธ ๊ฐœ๋…์ด ์žกํ˜€ ์žˆ์ง€ ์•Š์•„ ์˜๋ฏธ์˜ ์ฐจ์ด๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ
                                                                               if ((nvc != null))
      ๊ฒƒ์ด๋‹ค. ํด๋ž˜์Šค ์ƒ์†์„ ํ˜„๋Œ€์ ์ธ ์˜๋ฏธ๋กœ ํ’€์ดํ•˜์ž๋ฉด ๊ตฌํ˜„ ์ƒ์†์—
                                                                               {
      ๊ฐ€๊น๋‹ค. ์ด๋ฏธ ์ƒ์†๋œ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ ๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ๊ฐ                                          mConnectString = nvc(quot;ConnectStringquot;);
                                                                                  mSiteName = nvc(quot;SiteNamequot;);
      ์ฒด ์กฐํ•ฉ(Component ๋ฐฉ์‹)์„ ์„ ํ˜ธํ•˜๋ผ๋Š” ์˜๋ฏธ์ธ ๊ฒƒ์ด๋‹ค. ์ค‘์š”ํ•œ
                                                                               }
      ๊ฒƒ์€ ๊ฐ์ฒด ์กฐํ•ฉ์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†(์ง€๊ธˆ์˜ ์šฉ์–ด๋กœ๋Š”                                    }
      Interface Implementation)์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด์™€ ๊ด€๋ จํ•ด                         catch (Exception exp)
                                                                           {
     ใ€ŽGoF Design Patternใ€ ์ €์ž์ธ Eric Gamma์˜ ์ธํ„ฐ๋ทฐ๋ฅผ ์ฐธ
                        ์˜
                                                                               ExceptionManager.Publish(exp);
      ๊ณ ํ•˜๋ฉด ๋ณด๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.                                             }

                                                                      }
      ์‹œ์Šคํ…œ ์ค‘์ง€๊ฐ€ ์—†๋Š” ์œ ์—ฐํ•œ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ                                         public static string SiteName
        ํ•„์ž๋Š” ๋ช‡ ๊ฐ€์ง€ ํŒจํ„ด์˜ ์กฐํ•ฉ์„ ์˜ˆ๋กœ ๋“ค์–ด ์‹œ์Šคํ…œ์˜ ์ค‘์ง€ ์—†์ด


160 m a s o
Subscriber ํŒจํ„ด์„ ์ ์šฉํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.
    {      get { return mSiteName; } }

    public static string ConnectString
    {      get { return mConnectString; }      }
                                                                                Get Info
                                                                                                                   Load           Change
}                                                                                                                                Config File
                                                                                                Handler
                                                                  Client A
                                                                                                                  Notify
using System.Collections.Specialized;
using Microsoft.ApplicationBlocks.ExceptionManagement;
                                                                                        FileSystemWatcher
                                                                                                                           Configuration File
public class WebAppConfigHandler :                                                           .NotifyFilter
                                                                                                                             App.config
IConfigurationSectionHandler                                                                                                 Web.config
{
    public object                                              A Smart Developer
IConfigurationSectionHandler.Create(object parent, object
                                                             <๊ทธ๋ฆผ 1> Publisher-Subscriber์™€ Configuration Handler์˜ ๋งŒ๋‚จ
configContext, Xml.XmlNode input)
    {
        // 1. xpath๋ฅผ ํ†ตํ•œ ์ฒ˜๋ฆฌ                                     <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ™์ด ์„ค์ • ํŒŒ์ผ์„ ๊ฐ์‹œํ•˜๋Š” ํ•˜๋‚˜์˜ Monitor(Wa
        // 2. xml elements enumeration
                                                             tcher)๋ฅผ ํ•˜๋‚˜์˜ Publisher๋กœ ๋งŒ๋“ค๊ณ  Handler๋“ค์„ Subscriber
        // 3. NameValueSectionHandler์˜ ์ด์šฉ
                                                             ๋กœ ๋งŒ๋“ค๋ฉด ๋  ๊ฒƒ์ด๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ์„ค์ • ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๊ฐ์ง€
        NameValueCollection nvc;
        NameValueSectionHandler handler;
                                                             ํ•˜๋Š” ๊ฐ์‹œ์ž(Watcher)๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š๋ƒ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„
        try {
                                                             .NET 2.0 SDK๋ถ€ํ„ฐ๋Š” System.IO ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ File
            handler = new NameValueSectionHandler();
            nvc =                                            SystemWatcher.NotifyFileter๋ฅผ, ์ž๋ฐ”์—์„œ๋„ ๊ฐœ๋ฐœ์ž์— ์˜ํ•ด ๋งŒ
(NameValueCollection)handler.Create(parent, configContext,
                                                             ๋“ค์–ด์ง„ ์œ ์‚ฌํ•œ NotifyFilter๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค(๊ตฌํ˜„ ๋ชจ๋“ˆ์€ ์ฐธ๊ณ 
input);
                                                             ์ž๋ฃŒ์— ์†Œ๊ฐœ).
        }
        catch (Exception exp) {
                                                               ์ด๋‹ฌ์˜ ๋””์Šค์ผ“์— ์ˆ˜๋ก๋œ <๋ฆฌ์ŠคํŠธ 2>์˜ Event Handler ๋ถ€๋ถ„์—
            ExceptionManager.Publish(exp);
                                                             ํ™”๋ฉด ์ถœ๋ ฅ ๋Œ€์‹  ์„ค์ • ์ •๋ณด๋ฅผ ๊ฐ€์ง„ Handler๋กœ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ํ†ต๋ณด
            throw exp;
        }                                                    ํ•˜๋Š” ๋กœ์ง๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋Ÿฐํƒ€์ž„์‹œ์—๋„ ์œ ์—ฐํ•œ ๋ณ€ํ™”๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ”„
        return nvc;
                                                             ๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ํŽ˜์ด์ง€ ์ œ์•ฝ ํƒ“์— ์™„๋ฒฝํ•œ ์†Œ์Šค
    }
                                                             ์ฝ”๋“œ๋ฅผ ๋ณด์—ฌ์ฃผ์ง€ ๋ชปํ•ด ์•„์‰ฝ์ง€๋งŒ, ํฐ ํžŒํŠธ๋Š” ๋ชจ๋‘ ์ฃผ์—ˆ์œผ๋ฏ€๋กœ ๋‚˜
}
                                                             ๋จธ์ง€์˜ ๊ตฌํ˜„์€ ๋…์ž๋“ค์˜ ๋ชซ์œผ๋กœ ๋‚จ๊ธฐ๊ณ ์ž ํ•œ๋‹ค.
 ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๋ถ€์ž‘์šฉ์ด๋ผ ํ•  ๋งŒํ•œ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ
๋‹ค. ๋ฐ”๋กœ ํŒŒ์ผ ์ •๋ณด์™€ Handler๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ผ์น˜์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜
์—†๋‹ค๋Š” ์ ์ด๋‹ค. ํ”„๋กœ๊ทธ๋žจ ๋กœ๋”ฉ์‹œ์—๋งŒ ํ•ด๋‹น ์ •๋ณด๋ฅผ ๋กœ๋“œํ•˜๊ธฐ ๋•Œ๋ฌธ                                     ์ด๋‹ฌ์˜ ๋””์Šค์ผ“ : Pattern.zip

์— ์„ค์ • ํŒŒ์ผ์˜ ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝํ•˜๋”๋ผ๋„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ ์žˆ๋Š”
Handler์˜ ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ตญ ์‹œ์Šคํ…œ์„ ์ž ์‹œ                           ์ฐธ๊ณ  ์ž๋ฃŒ
                                                               1. Design Principles from Design Patterns(Eric Gamma์˜ ์ธํ„ฐ๋ทฐ),
์ •์ง€์‹œํ‚ค๊ณ  ์žฌ ์‹œ์ž‘ํ•จ์œผ๋กœ์จ ์„ค์ • ํŒŒ์ผ ์ •๋ณด์˜ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ์ฝ
                                                               http://www.artima.com/lejava/articles/designprinciplesP.html
์–ด์˜ค๋Š” ๋ฐฉ๋ฒ• ๋ฐ–์—๋Š” ์—†๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ž๋ฉด, ํŒŒ์ผ I/O๋ฅผ ์ค„์ด๋‹ค ๋ณด                          2. Windows File System Watcher for Java,
                                                               http://www2.hawaii.edu/~qzhang/FileSystemWatcher/index.html
๋‹ˆ Handler์™€ ์„ค์ • ํŒŒ์ผ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•ด ์‹œ์Šคํ…œ์˜
                                                               3. Eric Gamma et al,
                                                                                  ใ€ŽDesign Patterns : Elements of Reusable Object Oriented
์ค‘์ง€ ์—†์ด, ๋Ÿฐํƒ€์ž„(Runtime)์‹œ์— ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝ                          Softwareใ€ Addison Wesley
                                                                        ,
                                                               4. FileSystemWatcher.NotifyFilter,
ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ค์ • ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋  ๋•Œ                               http://msdn2.microsoft.com/en-
                                                               us/library/system.io.filesystemwatcher.notifyfilter(VS.80).aspx
Handler๊ฐ€ ๋‹ค์‹œ ์„ค์ • ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์ฝ์–ด์˜ค๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€
                                                               5. Frank Buschmann et al,
                                                                                       ใ€ŽPattern-Oriented Software Architecture : A System
ํ•œ๋‹ค๋ฉด Handler์™€ ํŒŒ์ผ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ                          of Patternsใ€Volume 1, Wiley
                                                                          ,
                                                               6. Douglas Schmidt et al,
                                                                                       ใ€ŽPattern-Oriented Software Architectureใ€
                                                                                                                              ,Volume 2,
๋‹ค. ๋‹จ ์ฃผ๊ธฐ์ ์œผ๋กœ ์„ค์ • ํŒŒ์ผ์„ ์ฒดํฌํ•˜๋Š” ๋กœ์ง์„ ๋„ฃ๋Š”๋‹ค๋Š” ๊ฒƒ์€
                                                               Wiley
์„ฑ๋Šฅ์ƒ์˜ ์ €ํ•˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๊ฐ•๊ตฌํ•ด์•ผ ํ•œ                              7. ํŒจํ„ด์˜ 5๊ฐ€์ง€ ๋ฒ•์น™, ์†์˜์ˆ˜, ๋ฐฑ๋ฒ”ํ˜ธ,
                                                               http://www.devpia.com/DevStudy/Lecture/LectureDetail.aspx?nSemiID=1171
๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด DIP๋ฅผ ์ ์šฉํ•œ Publisher-


                                                                                                                                               m a s o 161

More Related Content

What's hot

Enterprise2.0 ๊ธฐ์ˆ ์  ๊ณผ์ œ
Enterprise2.0   ๊ธฐ์ˆ ์  ๊ณผ์ œEnterprise2.0   ๊ธฐ์ˆ ์  ๊ณผ์ œ
Enterprise2.0 ๊ธฐ์ˆ ์  ๊ณผ์ œfreehub
ย 
2007๋…„ 11์›” ์†Œ์‹์ง€
2007๋…„ 11์›” ์†Œ์‹์ง€2007๋…„ 11์›” ์†Œ์‹์ง€
2007๋…„ 11์›” ์†Œ์‹์ง€Amnesty International Korea
ย 
2006 ๊ตญ์ œ์•ฐ๋„ค์Šคํ‹ฐ ์—ฐ๋ก€๋ณด๊ณ ์„œ
2006 ๊ตญ์ œ์•ฐ๋„ค์Šคํ‹ฐ ์—ฐ๋ก€๋ณด๊ณ ์„œ2006 ๊ตญ์ œ์•ฐ๋„ค์Šคํ‹ฐ ์—ฐ๋ก€๋ณด๊ณ ์„œ
2006 ๊ตญ์ œ์•ฐ๋„ค์Šคํ‹ฐ ์—ฐ๋ก€๋ณด๊ณ ์„œAmnesty International Korea
ย 
Chap2,3
Chap2,3Chap2,3
Chap2,3Clara_Kim
ย 
20210104_m2
20210104_m220210104_m2
20210104_m2kimdoongcat
ย 
์ฐจ๋ถ„ํ•˜๊ณ ๊ธ‰์ง„์ ์ธ_M
์ฐจ๋ถ„ํ•˜๊ณ ๊ธ‰์ง„์ ์ธ_M์ฐจ๋ถ„ํ•˜๊ณ ๊ธ‰์ง„์ ์ธ_M
์ฐจ๋ถ„ํ•˜๊ณ ๊ธ‰์ง„์ ์ธ_Mkimdoongcat
ย 
Social media newsroom for corporate conversation
Social media newsroom for corporate conversationSocial media newsroom for corporate conversation
Social media newsroom for corporate conversationJuny Lee
ย 
๋ธ”๋กœ๊ฑฐ์™€ ์นœ๊ตฌ๋˜๋Š” ์ƒค์ธ๋นŒ๋ฆฌ์กฐํŠธ
๋ธ”๋กœ๊ฑฐ์™€ ์นœ๊ตฌ๋˜๋Š” ์ƒค์ธ๋นŒ๋ฆฌ์กฐํŠธ๋ธ”๋กœ๊ฑฐ์™€ ์นœ๊ตฌ๋˜๋Š” ์ƒค์ธ๋นŒ๋ฆฌ์กฐํŠธ
๋ธ”๋กœ๊ฑฐ์™€ ์นœ๊ตฌ๋˜๋Š” ์ƒค์ธ๋นŒ๋ฆฌ์กฐํŠธhigwangsoo
ย 
2008๋…„ 4์›” ์†Œ์‹์ง€
2008๋…„ 4์›” ์†Œ์‹์ง€2008๋…„ 4์›” ์†Œ์‹์ง€
2008๋…„ 4์›” ์†Œ์‹์ง€Amnesty International Korea
ย 
๋ฐ”์นด๋ผ์‚ฌ์ดํŠธ
๋ฐ”์นด๋ผ์‚ฌ์ดํŠธ๋ฐ”์นด๋ผ์‚ฌ์ดํŠธ
๋ฐ”์นด๋ผ์‚ฌ์ดํŠธlisacarlson39
ย 
Future of work in 2030 2030๋…„ ์ผ์˜ ๋ฏธ๋ž˜
Future of work in 2030 2030๋…„ ์ผ์˜ ๋ฏธ๋ž˜ Future of work in 2030 2030๋…„ ์ผ์˜ ๋ฏธ๋ž˜
Future of work in 2030 2030๋…„ ์ผ์˜ ๋ฏธ๋ž˜ Jahee Lee
ย 
%Bc%Ba%B4ษฐ%Fc%B8%Ae%Bdวน%Ab%C1%F6ฤง%Bc%Ad %C3สพ%C8 %C0ฯบฮน%Df%C3%E9
%Bc%Ba%B4ษฐ%Fc%B8%Ae%Bdวน%Ab%C1%F6ฤง%Bc%Ad %C3สพ%C8 %C0ฯบฮน%Df%C3%E9%Bc%Ba%B4ษฐ%Fc%B8%Ae%Bdวน%Ab%C1%F6ฤง%Bc%Ad %C3สพ%C8 %C0ฯบฮน%Df%C3%E9
%Bc%Ba%B4ษฐ%Fc%B8%Ae%Bdวน%Ab%C1%F6ฤง%Bc%Ad %C3สพ%C8 %C0ฯบฮน%Df%C3%E9๊ทœ๋™ ์ตœ๊ทœ๋™
ย 
Vital skills You will need in the future workplace ๋ฏธ๋ž˜ ์ผํ„ฐ์— ํ•„์š”ํ•œ ํ•„์ˆ˜ ์Šคํ‚ฌ
Vital skills You will need in the future workplace ๋ฏธ๋ž˜ ์ผํ„ฐ์— ํ•„์š”ํ•œ ํ•„์ˆ˜ ์Šคํ‚ฌ Vital skills You will need in the future workplace ๋ฏธ๋ž˜ ์ผํ„ฐ์— ํ•„์š”ํ•œ ํ•„์ˆ˜ ์Šคํ‚ฌ
Vital skills You will need in the future workplace ๋ฏธ๋ž˜ ์ผํ„ฐ์— ํ•„์š”ํ•œ ํ•„์ˆ˜ ์Šคํ‚ฌ Jahee Lee
ย 
์‹œ๊ฐ„๊ด€๋ฆฌํŠน๊ฐ• Sk์—๋„ˆ์ง€
์‹œ๊ฐ„๊ด€๋ฆฌํŠน๊ฐ• Sk์—๋„ˆ์ง€์‹œ๊ฐ„๊ด€๋ฆฌํŠน๊ฐ• Sk์—๋„ˆ์ง€
์‹œ๊ฐ„๊ด€๋ฆฌํŠน๊ฐ• Sk์—๋„ˆ์ง€kisu kim
ย 
Personal Branding 2.0 in the age of Digital Communications
Personal Branding 2.0 in the age of Digital CommunicationsPersonal Branding 2.0 in the age of Digital Communications
Personal Branding 2.0 in the age of Digital CommunicationsJuny Lee
ย 
๋ฏธ์ฝ”๋…ธ๋ฏธ 3์žฅ 4์žฅ
๋ฏธ์ฝ”๋…ธ๋ฏธ 3์žฅ 4์žฅ๋ฏธ์ฝ”๋…ธ๋ฏธ 3์žฅ 4์žฅ
๋ฏธ์ฝ”๋…ธ๋ฏธ 3์žฅ 4์žฅoganadang
ย 
2008 Brading A Holistic View
2008 Brading A Holistic View2008 Brading A Holistic View
2008 Brading A Holistic ViewJin Lee
ย 
Crisis Communications through social media
Crisis Communications through social mediaCrisis Communications through social media
Crisis Communications through social mediaJuny Lee
ย 

What's hot (20)

Enterprise2.0 ๊ธฐ์ˆ ์  ๊ณผ์ œ
Enterprise2.0   ๊ธฐ์ˆ ์  ๊ณผ์ œEnterprise2.0   ๊ธฐ์ˆ ์  ๊ณผ์ œ
Enterprise2.0 ๊ธฐ์ˆ ์  ๊ณผ์ œ
ย 
2007๋…„ 11์›” ์†Œ์‹์ง€
2007๋…„ 11์›” ์†Œ์‹์ง€2007๋…„ 11์›” ์†Œ์‹์ง€
2007๋…„ 11์›” ์†Œ์‹์ง€
ย 
2006 ๊ตญ์ œ์•ฐ๋„ค์Šคํ‹ฐ ์—ฐ๋ก€๋ณด๊ณ ์„œ
2006 ๊ตญ์ œ์•ฐ๋„ค์Šคํ‹ฐ ์—ฐ๋ก€๋ณด๊ณ ์„œ2006 ๊ตญ์ œ์•ฐ๋„ค์Šคํ‹ฐ ์—ฐ๋ก€๋ณด๊ณ ์„œ
2006 ๊ตญ์ œ์•ฐ๋„ค์Šคํ‹ฐ ์—ฐ๋ก€๋ณด๊ณ ์„œ
ย 
Chap2,3
Chap2,3Chap2,3
Chap2,3
ย 
20210104_m2
20210104_m220210104_m2
20210104_m2
ย 
์ฐจ๋ถ„ํ•˜๊ณ ๊ธ‰์ง„์ ์ธ_M
์ฐจ๋ถ„ํ•˜๊ณ ๊ธ‰์ง„์ ์ธ_M์ฐจ๋ถ„ํ•˜๊ณ ๊ธ‰์ง„์ ์ธ_M
์ฐจ๋ถ„ํ•˜๊ณ ๊ธ‰์ง„์ ์ธ_M
ย 
Social media newsroom for corporate conversation
Social media newsroom for corporate conversationSocial media newsroom for corporate conversation
Social media newsroom for corporate conversation
ย 
๋ธ”๋กœ๊ฑฐ์™€ ์นœ๊ตฌ๋˜๋Š” ์ƒค์ธ๋นŒ๋ฆฌ์กฐํŠธ
๋ธ”๋กœ๊ฑฐ์™€ ์นœ๊ตฌ๋˜๋Š” ์ƒค์ธ๋นŒ๋ฆฌ์กฐํŠธ๋ธ”๋กœ๊ฑฐ์™€ ์นœ๊ตฌ๋˜๋Š” ์ƒค์ธ๋นŒ๋ฆฌ์กฐํŠธ
๋ธ”๋กœ๊ฑฐ์™€ ์นœ๊ตฌ๋˜๋Š” ์ƒค์ธ๋นŒ๋ฆฌ์กฐํŠธ
ย 
2008๋…„ 4์›” ์†Œ์‹์ง€
2008๋…„ 4์›” ์†Œ์‹์ง€2008๋…„ 4์›” ์†Œ์‹์ง€
2008๋…„ 4์›” ์†Œ์‹์ง€
ย 
๋ฐ”์นด๋ผ์‚ฌ์ดํŠธ
๋ฐ”์นด๋ผ์‚ฌ์ดํŠธ๋ฐ”์นด๋ผ์‚ฌ์ดํŠธ
๋ฐ”์นด๋ผ์‚ฌ์ดํŠธ
ย 
Future of work in 2030 2030๋…„ ์ผ์˜ ๋ฏธ๋ž˜
Future of work in 2030 2030๋…„ ์ผ์˜ ๋ฏธ๋ž˜ Future of work in 2030 2030๋…„ ์ผ์˜ ๋ฏธ๋ž˜
Future of work in 2030 2030๋…„ ์ผ์˜ ๋ฏธ๋ž˜
ย 
%Bc%Ba%B4ษฐ%Fc%B8%Ae%Bdวน%Ab%C1%F6ฤง%Bc%Ad %C3สพ%C8 %C0ฯบฮน%Df%C3%E9
%Bc%Ba%B4ษฐ%Fc%B8%Ae%Bdวน%Ab%C1%F6ฤง%Bc%Ad %C3สพ%C8 %C0ฯบฮน%Df%C3%E9%Bc%Ba%B4ษฐ%Fc%B8%Ae%Bdวน%Ab%C1%F6ฤง%Bc%Ad %C3สพ%C8 %C0ฯบฮน%Df%C3%E9
%Bc%Ba%B4ษฐ%Fc%B8%Ae%Bdวน%Ab%C1%F6ฤง%Bc%Ad %C3สพ%C8 %C0ฯบฮน%Df%C3%E9
ย 
)
))
)
ย 
Vital skills You will need in the future workplace ๋ฏธ๋ž˜ ์ผํ„ฐ์— ํ•„์š”ํ•œ ํ•„์ˆ˜ ์Šคํ‚ฌ
Vital skills You will need in the future workplace ๋ฏธ๋ž˜ ์ผํ„ฐ์— ํ•„์š”ํ•œ ํ•„์ˆ˜ ์Šคํ‚ฌ Vital skills You will need in the future workplace ๋ฏธ๋ž˜ ์ผํ„ฐ์— ํ•„์š”ํ•œ ํ•„์ˆ˜ ์Šคํ‚ฌ
Vital skills You will need in the future workplace ๋ฏธ๋ž˜ ์ผํ„ฐ์— ํ•„์š”ํ•œ ํ•„์ˆ˜ ์Šคํ‚ฌ
ย 
์‹œ๊ฐ„๊ด€๋ฆฌํŠน๊ฐ• Sk์—๋„ˆ์ง€
์‹œ๊ฐ„๊ด€๋ฆฌํŠน๊ฐ• Sk์—๋„ˆ์ง€์‹œ๊ฐ„๊ด€๋ฆฌํŠน๊ฐ• Sk์—๋„ˆ์ง€
์‹œ๊ฐ„๊ด€๋ฆฌํŠน๊ฐ• Sk์—๋„ˆ์ง€
ย 
Personal Branding 2.0 in the age of Digital Communications
Personal Branding 2.0 in the age of Digital CommunicationsPersonal Branding 2.0 in the age of Digital Communications
Personal Branding 2.0 in the age of Digital Communications
ย 
๋ฏธ์ฝ”๋…ธ๋ฏธ 3์žฅ 4์žฅ
๋ฏธ์ฝ”๋…ธ๋ฏธ 3์žฅ 4์žฅ๋ฏธ์ฝ”๋…ธ๋ฏธ 3์žฅ 4์žฅ
๋ฏธ์ฝ”๋…ธ๋ฏธ 3์žฅ 4์žฅ
ย 
2008 Brading A Holistic View
2008 Brading A Holistic View2008 Brading A Holistic View
2008 Brading A Holistic View
ย 
Crisis Communications through social media
Crisis Communications through social mediaCrisis Communications through social media
Crisis Communications through social media
ย 
How To Benchmark
How To BenchmarkHow To Benchmark
How To Benchmark
ย 

Viewers also liked

Connecting with Donors using Social Media
Connecting with Donors using Social MediaConnecting with Donors using Social Media
Connecting with Donors using Social MediaChris Dattilo
ย 
Trade show techology trends
Trade show techology trendsTrade show techology trends
Trade show techology trendsMichelle Bruno
ย 
Hot High Paying Keywords Of All Time
Hot High Paying Keywords Of All TimeHot High Paying Keywords Of All Time
Hot High Paying Keywords Of All Timejaxky
ย 
Dhwani09 Lonewolf - Prelims
Dhwani09 Lonewolf - PrelimsDhwani09 Lonewolf - Prelims
Dhwani09 Lonewolf - PrelimsJithin Jacob
ย 
The Art of the Interview
The Art of the InterviewThe Art of the Interview
The Art of the InterviewDan Kennedy
ย 
ICS Capabilites
ICS CapabilitesICS Capabilites
ICS Capabilitesrobertconleysr
ย 
Cardell Goes to the Park
Cardell Goes to the ParkCardell Goes to the Park
Cardell Goes to the Parkjditzel
ย 
Open Coffee Revival
Open Coffee RevivalOpen Coffee Revival
Open Coffee RevivalBogdan Iordache
ย 
Social Media and Face-to-Face Meetings
Social Media and Face-to-Face MeetingsSocial Media and Face-to-Face Meetings
Social Media and Face-to-Face MeetingsMichelle Bruno
ย 
Mne to na notebooku funguje
Mne to na notebooku fungujeMne to na notebooku funguje
Mne to na notebooku fungujeJuraj Bednar
ย 
Proposed Slide Show Edited 012511[1]
Proposed Slide Show Edited 012511[1]Proposed Slide Show Edited 012511[1]
Proposed Slide Show Edited 012511[1]Robert Libka
ย 
Breaking the Mobile Web with HTML5
Breaking the Mobile Web with HTML5 Breaking the Mobile Web with HTML5
Breaking the Mobile Web with HTML5 Maximiliano Firtman
ย 
Fha Presentation 2009
Fha Presentation 2009Fha Presentation 2009
Fha Presentation 2009peglover
ย 
Extending the Conversation: Using Instructional Technology to Improve Feedback
Extending the Conversation:  Using Instructional Technology to Improve FeedbackExtending the Conversation:  Using Instructional Technology to Improve Feedback
Extending the Conversation: Using Instructional Technology to Improve FeedbackGraham Whisen
ย 
Embedding BCE - Institutional Showcase (Strathclyde)
Embedding BCE - Institutional Showcase (Strathclyde)Embedding BCE - Institutional Showcase (Strathclyde)
Embedding BCE - Institutional Showcase (Strathclyde)JISC BCE
ย 
Patient Recruitment In Emerging Regions July 2010
Patient Recruitment In Emerging Regions  July 2010Patient Recruitment In Emerging Regions  July 2010
Patient Recruitment In Emerging Regions July 2010Mukesh Kumar, PhD, RAC
ย 

Viewers also liked (20)

Pp1
Pp1Pp1
Pp1
ย 
Connecting with Donors using Social Media
Connecting with Donors using Social MediaConnecting with Donors using Social Media
Connecting with Donors using Social Media
ย 
Trade show techology trends
Trade show techology trendsTrade show techology trends
Trade show techology trends
ย 
Hot High Paying Keywords Of All Time
Hot High Paying Keywords Of All TimeHot High Paying Keywords Of All Time
Hot High Paying Keywords Of All Time
ย 
Dhwani09 Lonewolf - Prelims
Dhwani09 Lonewolf - PrelimsDhwani09 Lonewolf - Prelims
Dhwani09 Lonewolf - Prelims
ย 
Tutorial
TutorialTutorial
Tutorial
ย 
The Art of the Interview
The Art of the InterviewThe Art of the Interview
The Art of the Interview
ย 
ICS Capabilites
ICS CapabilitesICS Capabilites
ICS Capabilites
ย 
Cardell Goes to the Park
Cardell Goes to the ParkCardell Goes to the Park
Cardell Goes to the Park
ย 
Open Coffee Revival
Open Coffee RevivalOpen Coffee Revival
Open Coffee Revival
ย 
Pp3
Pp3Pp3
Pp3
ย 
Social Media and Face-to-Face Meetings
Social Media and Face-to-Face MeetingsSocial Media and Face-to-Face Meetings
Social Media and Face-to-Face Meetings
ย 
Mne to na notebooku funguje
Mne to na notebooku fungujeMne to na notebooku funguje
Mne to na notebooku funguje
ย 
Proposed Slide Show Edited 012511[1]
Proposed Slide Show Edited 012511[1]Proposed Slide Show Edited 012511[1]
Proposed Slide Show Edited 012511[1]
ย 
Breaking the Mobile Web with HTML5
Breaking the Mobile Web with HTML5 Breaking the Mobile Web with HTML5
Breaking the Mobile Web with HTML5
ย 
Fha Presentation 2009
Fha Presentation 2009Fha Presentation 2009
Fha Presentation 2009
ย 
Extending the Conversation: Using Instructional Technology to Improve Feedback
Extending the Conversation:  Using Instructional Technology to Improve FeedbackExtending the Conversation:  Using Instructional Technology to Improve Feedback
Extending the Conversation: Using Instructional Technology to Improve Feedback
ย 
Embedding BCE - Institutional Showcase (Strathclyde)
Embedding BCE - Institutional Showcase (Strathclyde)Embedding BCE - Institutional Showcase (Strathclyde)
Embedding BCE - Institutional Showcase (Strathclyde)
ย 
Patient Recruitment In Emerging Regions July 2010
Patient Recruitment In Emerging Regions  July 2010Patient Recruitment In Emerging Regions  July 2010
Patient Recruitment In Emerging Regions July 2010
ย 
Invisimal alvaro
Invisimal alvaroInvisimal alvaro
Invisimal alvaro
ย 

Maso200708 Miss Pattern

  • 1. ์ž˜ ์“ฐ๋ฉด ์•ฝ, ๋ชป ์“ฐ๋ฉด ๋… ๋ฏธ์›Œ๋„ ๋‹ค์‹œ ๋ณด๋Š” ํŒจํ„ด ์ด์•ผ๊ธฐ ์‹ค์ „ ๋…ธํ•˜์šฐ โ— ๋””์ž์ธ ํŒจํ„ด ํ™œ์šฉ ๊ฐœ๋ฐœ ๊ณ ์ˆ˜ 12์ธ์ด ๋งํ•˜๋Š” GoF ๋””์ž์ธ ํŒจํ„ด(Design Pattern)์„ ์‹œ์ž‘์œผ๋กœ ํ•ด์„œ ํŒจํ„ด์ด ์ด ์„ธ์ƒ์— ์•Œ๋ ค์ง„์ง€ ์–ด๋Š๋ง 10๋…„์ด ํ˜๋ € ๋‹ค. ํ•˜์ง€๋งŒ ๊ตญ๋‚ด์— ์ˆ˜๋งŽ์€ ํŒจํ„ด ๊ด€๋ จ ์ฑ…์ด ์ถœ๊ฐ„๋˜์–ด ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ์ ์šฉ๋˜๋Š” ํŒจ ํ„ด์˜ ์ˆ˜๋Š” ์—ฌ์ „ํžˆ ์†์— ๊ผฝ์„ ๋งŒํผ ์ ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ง€๊ธˆ์˜ ํ˜„์‹ค๊ณผ๋Š” ๋งž์ง€ ์•Š๋‹ค๊ณ  ํ‘ธ๋…ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค ๋„ ์žˆ๊ณ , ํŒจํ„ด์˜ ๋‚จ์šฉ์ด๋‚˜ ์˜ค์šฉ์œผ๋กœ ์ธํ•ด ์˜คํžˆ๋ ค ๋ถ€์ •์ ์œผ๋กœ ์ƒ๊ฐํ•˜๋Š” ์ด๋“ค๋„ ์‰ฝ๊ฒŒ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๊ฐœ๋ฐœ์ž์˜ ์ž…์žฅ์—์„œ ํŒจํ„ด์— ๋Œ€ํ•œ ์ž˜๋ชป๋œ ์ƒ๊ฐ๋“ค์„ ๋ฐ”๋กœ ์žก์•„ ๋ณด๊ณ  ๊ฐ„๋‹จํ•œ ์˜ˆ๋ฅผ ํ†ตํ•ด ๊ทธ ์˜ฌ๋ฐ” ๋ฅธ ์‚ฌ์šฉ๋ฒ•์„ ์ •๋ฆฌํ•ด ๋ณธ๋‹ค. ํ•„์ž๋Š” ๋ช‡ ๋…„ ์ „ ์–ด๋Š ์„ธ๋ฏธ๋‚˜์—์„œ GoF, POSA ๋“ฑ์˜ ํŒจํ„ด์— ๋Œ€ํ•ด ๋ฐœํ‘œํ•œ ์งํ›„, โ€œํŒจํ„ด์ด ๋ญก๋‹ˆ ๊นŒ? ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”!โ€ ์งˆ๋ฌธ์„ ๋ฐ›์€ ์ ์ด ์žˆ๋‹ค. ๊ทธ ๋‹น์‹œ ์ž์„ธํ•œ ํŒจํ„ด ํ•˜๋‚˜ํ•˜๋‚˜๋Š” ๋ฌด์—‡ ๋ผ๋Š” ์ธ์ง€ ์•Œ๊ณ  ์žˆ๋Š” ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ •์ž‘ ์ „์ฒด์ ์ธ ๊ทธ๋ฆผ์ธ ํŒจํ„ด์˜ ์˜๋ฏธ๋ฅผ ๋ฌผ์–ด์˜จ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋Œ€๋‹ตํ•ด์•ผ ํ–ˆ ์„๊นŒ? ํ•„์ž๋Š” ๊ทธ์— ๋Œ€ํ•œ ์ •ํ™•ํ•œ ๋‹ต์„ ์ฐพ๊ธฐ ์œ„ํ•ด ๋จผ์ € ๊ทธ ์–ด์›์— ๋Œ€ํ•ด ์ ‘๊ทผํ•ด ๋ดค๋‹ค. ๋””์ž์ธ ํŒจํ„ด์ด๋ž€? ๋””์ž์ธ(Design)์€ De(away) + Sign(note)์ด๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ํ•ฉ์„ฑ๋œ ๋‹จ์–ด์ด๋‹ค. De์—๋Š”โ€˜๊ฐ€๋ณ ๊ฒŒโ€™ โ€˜ํ๋ฆฌ๋‹คโ€™ ๋˜๋Š” (away) ๋ผ๋Š” ์˜๋ฏธ๊ฐ€ ๋‹ด๊ฒจ ์žˆ๊ณ , Sign์ด๋ผ๋Š” ๋ง์€ ํ‘œ์‹œ(note)๋ฅผ ๋‚จ๊ธด๋‹ค๋Š” ์˜๋ฏธ ๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค. ๋ฏธ์ˆ ์—์„œ ์กฐ๊ฐ์ƒ์„ ๊ทธ๋ฆด ๋•Œ ํ”ํžˆโ€˜๋ฐ์…ํ•œ๋‹คโ€™ ๋ง์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๋ฐ”๋กœ ๋ผ๋Š” ์ดโ€˜๋ฐ์…โ€™ ๋””์ž์ธ์€ ๊ฐ™์€ ์–ด์›์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์–ด๋–ค ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ธฐ ์ „์— ์‚ด์ง ๋ฐ‘๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๋Š” ๊ณผ ๊ฒƒ์„ ๋ฐ์…์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ด๋Š” ์™„๋ฒฝํ•œ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ธฐ ์ด์ „์— ํ˜•ํƒœ์™€ ๋ผˆ๋Œ€๋ฅผ ์žก๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ๋””์ž์ธ์ด๋ผ๋Š” ๋‹จ์–ด ์—ญ์‹œ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ตฌ์กฐ์™€ ๋ผˆ๋Œ€๋ฅผ ์žก์•„๊ฐ€ ๋Š” ์ž‘์—…์„ ์˜๋ฏธํ•œ๋‹ค. ์ด์–ด์„œโ€˜ํŒจํ„ด(Pattern)โ€™ ์ด๋ผ๋Š” ๋‹จ์–ด๋Š” ํฅ๋ฏธ๋กญ๊ฒŒ๋„ ์˜์–ด์˜โ€˜Fatherโ€™ ์ด๋ผ๋Š” ๋‹จ์–ด์—์„œ ํŒŒ์ƒ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์•„๋ฒ„์ง€์˜ ์–ผ๊ตด์ด๋‚˜ ์‹ ์ฒด์  ํŠน์„ฑ, ์„ฑ๊ฒฉ ๋“ฑ์„ ์ƒ๋‹น์ˆ˜ ๋ฌผ๋ ค๋ฐ›์€ ๊ฒƒ์ฒ˜๋Ÿผ, ์–ด 8 ๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํŒจํ„ด์„ ์จ์„œโ€˜์ „์— ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ–ˆ์—ˆ์ง€โ€™ ์ƒ๊ฐ์„ ๊ฐ€์ง€๊ณ  ์œ ์‚ฌ ๋ผ๋Š” ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿผ ์ด์ œ ๋””์ž์ธ๊ณผ ํŒจํ„ด์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์กฐํ•ฉํ•ด ๋””์ž์ธ ํŒจํ„ด์˜ ์˜๋ฏธ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. โ€˜ํ”„๋กœ ๊ทธ๋žจ์ด๋ผ๋Š” ์ž‘ํ’ˆ์„ ๋งŒ๋“ค๊ธฐ ์ด์ „์— ๋ฐ˜๋ณต์ ์œผ๋กœ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ‘๊ทธ๋ฆผ์ด๋‚˜ ์Šค์ผ€์น˜ ๋“ฑ์„ ๋งˆ๋ จํ•ด๋‘ ์†์˜์ˆ˜ indigoguru@gmail.com ๋Š” ๊ฒƒโ€™์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋””์ž์ธ ํŒจํ„ด์˜ ์ •์˜๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. . Microsoft MVP์™€ Devpia Architec ture&Design ์„น์…˜์˜ ์‹œ์‚ฝ์œผ๋กœ ํ™œ๋™ ์ค‘ ํŒจํ„ด์— ๋Œ€ํ•œ ๋ถˆ์‹ ๋“ค ์ด๋‹ค. ๋ถ€์กฑํ•œ ์‹ค๋ ฅ์ด์ง€๋งŒ ๊ฐ€์ง„ ์ง€์‹์„ ์ตœ๊ทผ ๋“ค์–ด ์ข…์ข… ํŒจํ„ด์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ถˆ๋งŒ ์„ž์ธ ๋ชฉ์†Œ๋ฆฌ๋ฅผ ๋“ค์„ ์ˆ˜ ์žˆ๋‹ค. ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋‹ˆ ์˜ค ๊ณต์œ ํ•˜๋Š” ์ž์„ธ๋งŒํผ์€ ๋ˆ„๊ตฌ๋ณด๋‹ค ๋ถ€์ž๋ผ ๊ณ  ์žํ‰ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ง€๋‚œ 3๋…„๊ฐ„ ์†Œํ”„ํŠธ ํžˆ๋ ค ์„ฑ๋Šฅ์ด ๋” ๋‚˜๋น ์กŒ๋‹ค๊ฑฐ๋‚˜ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ ธ ์œ ์ง€ ๋ณด์ˆ˜ํ•˜๊ธฐ๊ฐ€ ๋” ํž˜๋“ค์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์ด ์ฃผ๋ฅผ ์ด ์›จ์–ด๊ณตํ•™์— ๊ด€๋ จ๋œ ์„ธ๋ฏธ๋‚˜์™€ ์Šคํ„ฐ๋””๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” A&D Eva์˜ ๋ฆฌ๋”์ด๋‹ค. ๋ฃฌ๋‹ค. ์™œ ์ด๋Ÿฐ ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜์—ˆ์„๊นŒ? ์™„๋ฒฝํ•œ ๋ถ„์„์€ ์•„๋‹ˆ๊ฒ ์ง€๋งŒ ํ•„์ž์˜ ๊ฒฝํ—˜์— ๋น„์ถฐ ๊ทธ ์› ์„ธ๊ณ„์ ์ธ ํŒจํ„ด ํ•™ํšŒ์ธ PLOP์„ ๊ตญ๋‚ด์— ์ธ์„ ์„ค๋ช…ํ•ด ๋ณธ๋‹ค. ๋„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฟˆ์ด๋‹ค. 158 m a s o
  • 2. ์ž C๊ฐ€โ€˜์šธ๋ฉฐ ๊ฒจ์ž ๋จน๊ธฐโ€™ ํŠน๋ณ„ํ•œ ์ธ์ˆ˜์ธ๊ณ„ ์—†์ด ํ”„๋กœ๊ทธ๋žจ ๋ชจ๋‘ ๋กœ GoF์˜ 23๊ฐ€์ง€ ํŒจํ„ด์ด ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์ค„ ๊ฒƒ์ด๋ž€ ์ž˜๋ชป๋œ ํ™˜์ƒ ๋งŽ์€ ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๋“ค์€ GoF ํŒจํ„ด์ด ํŒจํ„ด์˜ ์‹œ์ž‘์ด๋ฉฐ ๋์ธ ๊ฒƒ์œผ ๋ฅผ ๋– ๋งก๊ฒŒ ๋œ๋‹ค. ํ•˜์ง€๋งŒ C๋Š” ํšŒ์‚ฌ์—์„œ ์ •ํ•ด ๋†“์€ ๋ฐ๋“œ๋ผ์ธ์„ ์ง€ ๋กœ ์•Œ๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ง€๊ตฌ์ƒ์—๋Š” ์†Œํ”„ํŠธ์›จ์–ด์™€ ์—ฐ๊ด€๋œ ๋‹ค์–‘ํ•œ ํ‚ค๊ธฐ ์œ„ํ•ด ํ”„๋ ˆ์ž„์›Œํฌ์— ๋Œ€ํ•œ ์ดํ•ด ์—†์ด ์ž์‹ ๋งŒ์˜ ์ฝ”๋“œ๋ฅผ ์งœ๊ฒŒ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์ˆ˜์‹ญ ๊ฐ€์ง€ ํŒจํ„ด ์„œ์ ์ด ๋‚˜์™€ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ฑฐ๋Œ€ํ•œ ๋˜๊ณ , ์‹ฌ์ง€์–ด ๋‹น์žฅ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด๋ถ€์— ์ž์‹  ์‹œ์Šคํ…œ์˜ ๊ตฌ์กฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์žก์•„์ฃผ๋Š” ๊ตฌ์กฐ ํŒจํ„ด์„ ๋น„๋กฏํ•ด ๋ถ„์‚ฐ ์ด ์›ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ์—ฌ๋Ÿฌ๋ถ„์ด ์ด ํ”„ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ํŒจํ„ด, ๋ฆฌ์–ผํƒ€์ž„ ์‹œ์Šคํ…œ(Realtime System)์˜ ๋กœ๊ทธ๋žจ์˜ ๊ฐœ๋ฐœ ์—…๋ฌด๋ฅผ ์ธ์ˆ˜ ๋ฐ›์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด ๋ณด์ž. ์ƒ๊ฐ๋งŒ ํ•ด๋„ QoS๋ฅผ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ„ด, ๋ณด์•ˆ ํŒจํ„ด, ๋‹จ์œ„ ํ…Œ์ŠคํŒ…(Unit ๋”์ฐํ•  ๊ฒƒ์ด๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด ํŒจํ„ด์— ์ต์ˆ™ํ•œ ๊ฐœ๋ฐœ์ž๋ผ๊ณ  ํ• ์ง€๋ผ๋„ ํ”„ Testing)์„ ์œ„ํ•œ ํŒจํ„ด, ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ๋Œ€๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ„ด ๋ ˆ์ž„์›Œํฌ ์•ˆ์— ๋’ค์ฃฝ๋ฐ•์ฃฝ๋œ ์ฝ”๋“œ ํƒ“์— ์ƒ๋‹นํžˆ ๋งŽ์€ ์‹œ๊ฐ„ ๋™์•ˆ ๋ฆฌ ๋“ฑ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ด€๋ จ ์„œ์ ๋“ค์ด ์†Œ๊ฐœ๋˜์—ˆ๊ณ , 1994๋…„ ์ดํ›„ ๋งค๋…„ ๊ฐœ์ตœ ํŒฉํ† ๋ง ์ž‘์—…์„ ํ•ด์•ผ ํ•  ๊ฒƒ์ด๊ณ , ๋˜ํ•œ ๋ง๋„ ์•ˆ ๋˜๋Š” ๋ฐ๋“œ๋ผ์ธ์ด ๋ˆˆ ๋˜๋Š” PLOP ํ•™ํšŒ์—์„œ๋„ ๋ฌด์ˆ˜ํ•œ ํŒจํ„ด๋“ค์ด ์Ÿ์•„์ ธ ๋‚˜์˜ค๊ณ  ์žˆ๋‹ค. ์•ž์— ์žˆ๋‹ค๋ฉด ๋ฆฌํŒฉํ† ๋ง์€ ๊ณ ์‚ฌํ•˜๊ณ  ๋‹น์žฅ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ธฐ์œ„ํ•ด ๋”์šฑ ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ์–ด๋–ค ํŠน์ • ๋ฌธ์ œ์— ๋”ฑ ๋“ค์–ด๋งž๋Š” ํŒจํ„ด์„ 24๊ฐ€์ง€ ๋” ๊ผฌ์ธ ์ŠคํŒŒ๊ฒŒํ‹ฐ์™€ ๊ฐ™์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ตญ ํŒจ ์—์„œ ์ฐพ๊ธฐ๋ณด๋‹ค๋Š” ์ˆ˜์ฒœ ๊ฐ€์ง€ ํŒจํ„ด์—์„œ ์ฐพ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์œ ๋ฆฌํ•˜์ง€ ํ„ด์„ ์ž˜ ์•ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๊ทธ์— ๋Œ€ํ•œ ์ง€์‹์„ ์กฐ์ง๊ณผ ํŒ€ ๋‚ด์—์„œ ๋ชจ ์•Š์„๊นŒ? ๋ฌผ๋ก  ๋ช‡ ์ฒœ ๊ฐ€์ง€ ํŒจํ„ด์„ ์–ธ์ œ ์Šต๋“ํ•˜๋Š๋ƒ๊ณ  ๋ฐ˜๋ฐ•ํ• ์ง€๋„ ๋“  ๊ตฌ์„ฑ์›์ด ์ถฉ๋ถ„ํžˆ ์ดํ•ดํ•˜๊ณ  ๊ณต์œ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๋ชจ๋“  ๊ฒƒ์ด ๋ฌด ๋ชจ๋ฅด์ง€๋งŒ, ํ‹ˆํ‹ˆ์ด ๊ณต๋ถ€ํ•ด๋‘”๋‹ค๋ฉด ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ์ค„์ด๋Š” ๋ฐ ํฐ ๋„์›€์ด ์šฉ์ง€๋ฌผ์ด ๋  ๊ฐ€๋Šฅ์„ฑ์ด ํฌ๋‹ค. ๋  ๊ฒƒ์ด๋‹ค. ํŒจํ„ด์„ ๋ฐ”๋ผ๋ณด๋Š” ์˜ฌ๋ฐ”๋ฅธ ์ž์„ธ ๋น„๋ก ๋ถ€์กฑํ•œ ๊ฒฝํ—˜์ด์ง€๋งŒ, ์ข€ ๋” ์‹ค๋ฌด์—์„œ ๋””์ž์ธ ํŒจํ„ด์„ ์ž˜ ์‚ฌ ์„ ๋ฌด๋‹น์ด ์‚ฌ๋žŒ ์žก๋Š”๋‹ค ๋งŒ์•ฝ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ œ์•ฝ์ด ์žˆ์œผ๋ฉด์„œ ๋น ๋ฅธ ์‘๋‹ต์†๋„๋ฅผ ์š”๊ตฌํ•˜๋Š” ์ž„ ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ช‡ ๊ฐ€์ง€ ์กฐ์–ธ์„ ์ œ์‹œํ•ด ๋ณธ๋‹ค. ๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ(Embedded System)์— ๋ณ€ํ™”์™€ ํ™•์žฅ์—๋Š” ์œ ์—ฐํ•˜ ์ง€๋งŒ ์‘๋‹ต์†๋„๊ฐ€ ๋”๋”˜ ํŒจํ„ด(Component Configurator, ๋‚˜๋ฌด๋ณด๋‹ค๋Š” ์ˆฒ์„ ๋ณด๋ผ(ํŒจํ„ด์„ ๋งŒ๋“œ๋Š” 5๊ฐ€์ง€ ๋ฒ•์น™ ํŒŒ์•…) Pipe&Filter)๋“ค์„ ์—ฐ๋™ํ•ด ์ ์šฉ์‹œํ‚ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ? ํ”ํžˆ ํŒจํ„ด์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ํŒจํ„ด์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ƒ๊ฐํ•˜๋ฉด์„œ ๋งค์น˜ ๋‚จ์šฉ์€ ๋Œ€๋ถ€๋ถ„ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์— ๋†“์—ฌ ์žˆ๋‹ค. ์ž์‹ ์ด ์•Œ๊ณ  ์žˆ๋Š” ํŒจํ„ด ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ํŒจํ„ด์„ ๋งŒ๋“œ๋Š” 5๊ฐ€์ง€ ๋ฒ•์น™์— ์˜๊ฑฐํ•ด ์ƒ๊ฐํ•˜๊ธธ ๊ถŒ ์ด ์ด ๋ฌธ์ œ์— ์ ํ•ฉํ•ด ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ๋งŒ ๊ณ ๋ คํ•œ ๋‚˜๋จธ์ง€, ์ •์ž‘ ์‹œ์Šคํ…œ ํ•œ๋‹ค(์งง์€ ํŽ˜์ด์ง€์— ํŒจํ„ด์„ ๋งŒ๋“œ๋Š” 5๊ฐ€์ง€ ๋ฒ•์น™์„ ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์€ ์ด ์ถ”๊ตฌํ•˜๋Š” QoS(Quality of Service)๋ฅผ ์ „ํ˜€ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ  ํŒจ ๋งค์šฐ ์–ด๋ ค์šด ์ผ์ด๋ฏ€๋กœ, ํ•„์ž์˜ ์˜จ๋ผ์ธ ๋™์˜์ƒ ์ฐธ๊ณ ์ž๋ฃŒ๋ฅผ ํ™œ์šฉํ•˜ ํ„ด์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์‹ค์ œ ๋Œ€๋ถ€๋ถ„์˜ ํŒจํ„ด์ด ์ถ”๊ตฌํ•˜๋Š” ๊ฒƒ์€ ์œ  ๊ธธ ๋ฐ”๋ž€๋‹ค). ์—ฌ๋Ÿฌ๋ถ„์ด Observer, Model-View-Controller, Pub ์—ฐ์„ฑ๊ณผ ํ™•์žฅ์„ฑ ๊ทธ๋ฆฌ๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด์ง€๋งŒ, ์‹œ๊ฐ„์  ๋ฐ๋“œ๋ผ์ธ์„ ์š” lisher-Subscriber, Event Channel ํŒจํ„ด์„ ๊ฐ๊ฐ ๋ณ„๊ฐœ์˜ ํŒจํ„ด์œผ ๊ตฌํ•˜๋Š” ๋ฆฌ์–ผํƒ€์ž„ ์‹œ์Šคํ…œ์ด๋‚˜ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ CPU์˜ ์ œ์•ฝ์„ ๋ฐ›๋Š” ์ž„ ๋กœ ์ƒ๊ฐํ•œ๋‹ค๋ฉด, ๋ฌด์—‡๋ณด๋‹ค ํŒจํ„ด์„ ๋งŒ๋“œ๋Š” 5๊ฐ€์ง€ ๋ฒ•์น™์„ ์‚ดํŽด๋ณผ ํ•„ ๋ฒ ๋””๋“œ ์‹œ์Šคํ…œ ๋“ฑ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ๋‹ค์†Œ ๋ฌด๋ฆฌ๊ฐ€ ๋”ฐ๋ฅด๋Š” ํŒจํ„ด์ด ์š”๊ฐ€ ์žˆ๋‹ค. ์ด ํŒจํ„ด๋“ค์€ ์‚ฌ์šฉ๋˜๋Š” ๋„๋ฉ”์ธ์€ ๋ชจ๋‘ ๋‹ค๋ฅด์ง€๋งŒ, DIP ์กด์žฌํ•จ์„ ์žŠ์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค. (Dependency Inversion Principle, ์˜์กด ๊ด€๊ณ„ ์—ญ์ „์˜ ๋ฒ•์น™)์— ์˜๊ฑฐํ•˜๋ฉด ๋ชจ๋‘โ€˜์ˆ˜๋‹ค์Ÿ์ด ๊ฐ์ฒดโ€™ ๋งŒ๋‚  ๋•Œ ์ ์šฉ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋ฅผ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๊ฐ€ ํŒจํ„ด์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค ๋˜ ํ•˜๋‚˜์˜ ๋ฌธ์ œ๋Š” ํŒจํ„ด์„ ์ด์šฉํ•ด ์ถฉ๋ถ„ํ•œ ํ˜‘์—…์ด ๊ฐ€๋Šฅํ•  ๋งŒํผ ํŒจํ„ด๊ฐ„์˜ ์—ฐ๊ด€์„ฑ์„ ์‚ดํŽด๋ณด๋ผ ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋“ค์ด ํŒจํ„ด์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋Š” ์ ์ด๋‹ค. ์šฐ๋ฆฌ ์ฃผ์œ„์— ํŒจํ„ด์€ ๊ฒฐ์ฝ” ๋…๋‹จ์ ์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ํŒจํ„ด ๋น„์ผ๋น„์žฌํ•˜๊ฒŒ ์ผ์–ด๋‚˜๋Š” ํ•œ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ๋“ค๊ฒ ๋‹ค. GoF ํŒจํ„ด์„ ์ž˜ ์•„ ๋“ค์„ ์ฃผ์˜ ๊นŠ๊ฒŒ ์‚ดํŽด๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค. Component Configurator, ๋Š” ๊ฐœ๋ฐœ์ž A๊ฐ€ ๋ณ€ํ™”์— ์œ ์—ฐํ•˜๋ฉด์„œ ํ™•์žฅ์ด ์ž์œ ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ Reflection, Template Method(Strategy)๋Š” ํ•ญ์ƒ ํ•˜๋‚˜์˜ ๋ฌถ์Œ์œผ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ํ•˜์ž. ํ•˜์ง€๋งŒ ์–ด๋Š ๋‚  ๊ฐœ๋ฐœ์ž A๊ฐ€ ๋‹ค๋ฅธ ํŒŒํŠธ๋กœ ์ž๋ฆฌ ๋กœ, Chain of Responsibility๋„ ์—ญ์‹œ Iterator ํŒจํ„ด๊ณผ ํ•จ๊ป˜ ์—ฐ๋™ ๋ฅผ ์˜ฎ๊ธฐ๊ฒŒ ๋˜๋ฉด์„œ ๊ฐœ๋ฐœ์ž B๊ฐ€ A์˜ ์—…๋ฌด๋ฅผ ๋Œ€์‹  ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค. ํ•˜ ๋˜์–ด ์‚ฌ์šฉ๋œ๋‹ค. ์ง€๋งŒ ๊ณ ๊ธ‰ ํŒจํ„ด์„ ๋” ์ž˜ ์•Œ๊ณ  ์žˆ๋Š” B๋Š” ์ง€๊ธˆ์˜ ์ƒํ™ฉ์— ๊ทธ ๊ตฌ์กฐ๊ฐ€ ์ ํ•ฉํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ํ–ฅํ›„ ์žฌํ™œ์šฉ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด A๊ฐ€ ๋งŒ๋“  ํŒจํ„ด์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ์›์น™์— ์˜๊ฑฐํ•œ๋‹ค. ๋ชจ๋“ˆ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋˜ ์ค‘์— ๊ฐ‘์ž‘์Šค๋ ˆ ์–ด๋–ค ๊ด€์ ์—์„œ ๋ณด๋ฉด ํŒจํ„ด์€ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ์›์น™์— ์˜๊ฑฐํ•˜๊ณ  ์žˆ B๊ฐ€ ํšŒ์‚ฌ๋ฅผ ๊ทธ๋งŒ๋‘๊ณ  ๋– ๋‚ฌ๋‹ค. ๊ทธ ํ›„ ํŒจํ„ด์— ์ต์ˆ™ํ•˜์ง€ ๋ชปํ•œ ๊ฐœ๋ฐœ ๋‹ค. GoF ์„œ๋‘์— ๋‚˜์˜จ ์ด ๋‘ ์›์น™์„ ๊ณผ์†Œํ‰๊ฐ€ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ์ƒ m a s o 159
  • 3. ๊ฐœ๋ฐœ ๊ณ ์ˆ˜ 12์ธ์ด ๋งํ•˜๋Š” ์‹ค์ „ ๋…ธํ•˜์šฐ_ ๋ฏธ์›Œ๋„ ๋‹ค์‹œ ๋ณด๋Š” ํŒจํ„ด ์ด์•ผ๊ธฐ ๊ฐ๋ณด๋‹ค ๋งŽ์ด ์กด์žฌํ•œ๋‹ค. ํŒจํ„ด๊ณผ ๊ด€๋ จ๋œ ์ฑ… ํ•œ ๊ถŒ์„ ์ฝ์€ ๊ฐœ๋ฐœ์ž๋ผ ๋ณ€ํ™”์— ์œ ์—ฐํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๊ณ ์ž ํ•œ๋‹ค. ์š”์ฆ˜ ๋ฉด ์ด ๋‘ ๊ฐ€์ง€ ์›์น™์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์‚ดํŽด๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค. ๋‹ค์‹œ๊ธˆ ์ „์œจ ๋งŽ์€ ํ”Œ๋žซํผ์ด๋‚˜ ๊ฐœ๋ฐœ์ž๋“ค ์‚ฌ์ด์—์„œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(Metadata) ์ง€ ์„ ๋Š๋ผ๊ฒŒ ๋˜๋Š” ์ˆœ๊ฐ„์„ ๋งž์ดํ•˜๊ฒŒ ๋ ๊ฒƒ์ด๋‹ค. ํ–ฅ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋Œ€๋‘๋˜๊ณ  ์žˆ๋‹ค. ๋ณ€ํ™”๊ฐ€ ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ๋ถ€๋ถ„ (๋ณด์•ˆ ํ”„๋กœํ† ์ฝœ ๊ต์ฒด, DB ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด ๋ณ€๊ฒฝ, ๋„คํŠธ์›Œํฌ ํ”„๋กœํ†  ์ฝœ)๋“ค์„ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์— ๊ธฐ์ˆ ํ•จ์œผ๋กœ์จ, ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜์ • ์—†์ด ๋ณ€ โ— 1์›์น™ : Program to an interface, not to an implementation โ€˜์ธํ„ฐํŽ˜์ด์Šค(๊ณ„์•ฝ) ๊ธฐ๋ฐ˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ด๋ผ.โ€™์ง€๊ธˆ ํ•œ๋ฒˆ ๋”” ํ™”์— ๋น ๋ฅด๊ฒŒ ๋Œ€์ฒ˜ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๊ณผ ์ž์ธ ํŒจํ„ด ์„œ์ ์„ ํŽผ์ณ๋ณด๊ธธ ๋ฐ”๋ž€๋‹ค. ๋ชจ๋“  ํŒจํ„ด๋“ค์ด ์ถ”์ƒ ํด๋ž˜์Šค ์ •์—์„œ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ์ ์ด ๋ฐœ์ƒํ•œ๋‹ค. ํŒŒ์ผ(file)์— ์„ค์ • ์ •๋ณด๊ฐ€ (Abstract Class)๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค(Interface)๋กœ๋ถ€ํ„ฐ ์ƒ์†์„ ๋ฐ›๊ณ  ์žˆ๋‹ค ๋ณด๋‹ˆ ์ž์ฃผ ์ฝ์–ด ๋“ค์ด๋Š” ๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์—๋Š” ํŒŒ์ผ ์ ‘๊ทผ์„ ์œ„ํ•ด ์žˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹คํ˜•์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด ์ง€๋‚˜์น˜๊ฒŒ ๋นˆ๋ฒˆํ•œ I/O๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๋น ๋ฅธ ์‘๋‹ต์†๋„ ์Šค(Interface)๋ฅผ ์ƒ์†๋ฐ›์€ ๊ฐ์ฒด๋ผ๋ฉด ๋Ÿฐํƒ€์ž„(Runtime)์‹œ์— ์–ธ์ œ ๋‚˜ ๋งŽ์€ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ์„ฑ๋Šฅ ์ €ํ•˜ ๋“ ์ง€ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ •๋ ฌ ์•Œ ์˜ ์ฃผ๋œ ์›์ธ์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์„ค์ • ํŒŒ์ผ(App.Config ๋˜๋Š” ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ Quick Sorting์„ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ๋ˆ„๊ตฐ๊ฐ€ ๋” ๋น ๋ฅธ Super Web.Config)์˜ ์ •๋ณด๋ฅผ ๊ณ ์Šค๋ž€ํžˆ ๋“ค๊ณ  ์žˆ๋Š” Configuration Quick Sorting ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐœ๋ฐœํ–ˆ๋‹ค๊ณ  ํ•˜์ž. Handler๋ฅผ <๋ฆฌ์ŠคํŠธ 1>์ฒ˜๋Ÿผ ๋งŒ๋“ค๊ณ , ํ”„๋กœ๊ทธ๋žจ์„ ๋กœ๋”ฉํ•  ๋•Œ ์ด ๋‘ ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด ์‹œ Handler์—์„œ ์„ค์ • ํŒŒ์ผ์˜ ์ •๋ณด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฌ ์Šคํ…œ์˜ ์ค‘์ง€ ์—†์ด ๊ต์ฒดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ƒ์†(๊ณ„ ๋ฉด ํด๋ผ์ด์–ธํŠธ(Client)๋“ค์ด Handler๋ฅผ ํ†ตํ•ด ์ •๋ณด๋ฅผ ์–ป์–ด์˜ค๊ฒŒ ๋˜ ์•ฝ ๊ธฐ๋ฐ˜)์ด ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ๊ฐ ๊ฐ์ฒด๊ฐ€ ์ง€๋‹Œ ํ‘œํ˜„์˜ ์ž์œ ๋ฅผ ์–ต์••ํ•˜๋Š” ๋ฏ€๋กœ, ํŒŒ์ผ I/O์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋Ÿฐ ์•ฝ๊ฐ„์˜ ์–ต์••์œผ๋กœ ์ธํ•ด ์ž์œ ๋กญ๊ฒŒ <๋ฆฌ์ŠคํŠธ 1> ์„ค์ • ํŒŒ์ผ์˜ ์ •๋ณด๋ฅผ ์ฝ์–ด์˜ค๋Š” Handler์˜ ์˜ˆ - .NET ์šฉ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์„ ์–ป์€ ๊ฒƒ์€ ๋ถ„๋ช…ํ•˜๋‹ค. ์‚ฌ์‹ค ๋ชจ๋“  ํŒจํ„ด์ด using System.Collections.Specialized; Strategy๋‚˜ Template Method ํŒจํ„ด์„ ์•ฝ๊ฐ„ ๋ณ€ํ˜•ํ–ˆ๋‹ค๊ณ  ํ•ด๋„ ๊ณผ using Microsoft.ApplicationBlocks.ExceptionManagement; ์–ธ์€ ์•„๋‹ ๊ฒƒ์ด๋‹ค. public class WebAppConfig { โ— 2์›์น™ : Favor Object Composition over Class Inheritance private static string mSiteName; โ€˜ํด๋ž˜์Šค ์ƒ์†(Class Inheritance)๋ณด๋‹ค๋Š” ๊ฐ์ฒด ์กฐํ•ฉ์„ ์„ ํ˜ธํ•ด private static string mConnectString; static WebAppConfig() ๋ผ.โ€™ ๋‘ ๋ฒˆ์งธ ์›์น™์€ ํ˜„์žฌ ๋งŽ์€ ๋…ผ๋ž€์„ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค. ์‹ฌ์ง€์–ด ๊ตญ ์ด { ๋‚ด์™ธ์˜ ๋ช‡ ๊ฐ€์ง€ ์„œ์ ๋“ค์€ ์ด ๋‘ ๋ฒˆ์งธ ์›์น™์˜ ์˜๋ฏธ๋ฅผ ์ œ๋Œ€๋กœ ๋ถ„์„ NameValueCollection nvc = new NameValueCollection(); ํ•˜์ง€ ์•Š์€ ์ฑ„, โ€˜์ƒ์†๋ณด๋‹ค๋Š” ์กฐํ•ฉ์„ ์„ ํ˜ธํ•˜๋ผโ€™ ๊ทน๋‹จ์ ์ธ ํ‘œํ˜„์„ ๋Š” try { ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค. GoF์— ๋‚˜์˜ค๋Š” ๋ชจ๋“  ํŒจํ„ด์ด ์ƒ์†์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ // GetConfig ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด web.config์— ๋“ฑ๋ก๋œ ํด๋ž˜์Šค ๋‚ด์˜ ์ƒ์†์„ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๋Š” ์˜๋ฏธ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐ›์•„๋“ค์—ฌ์•ผ ํ• ๊นŒ? GoF // Create method๊ฐ€ ํ˜ธ์ถœ๋˜์–ด NameValueCollection ๊ฐ์ฒด๋ฅผ // ๋˜๋Œ๋ฆฐ๋‹ค. ๋””์ž์ธ ํŒจํ„ด์ด ๋“ฑ์žฅํ•œ ์‹œ๋Œ€์  ๋ฐฐ๊ฒฝ์„ ๊ณ ๋ คํ•˜๋ฉด ์ด๋Š” ์˜์™ธ๋กœ ๊ฐ„๋‹จ nvc = ํ•ด์ง„๋‹ค. ๋‹น์‹œ ์ด ์›์น™์€ C++๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์“ฐ์˜€๋˜ ํ„ฐ๋ผ ์ธํ„ฐํŽ˜์ด (NameValueCollection)System.Configuration.ConfigurationSet tings.GetConfig(quot;AppConfigquot;); ์Šค๋ผ๋Š” ๋ช…์‹œ์ ์ธ ๊ฐœ๋…์ด ์žกํ˜€ ์žˆ์ง€ ์•Š์•„ ์˜๋ฏธ์˜ ์ฐจ์ด๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ if ((nvc != null)) ๊ฒƒ์ด๋‹ค. ํด๋ž˜์Šค ์ƒ์†์„ ํ˜„๋Œ€์ ์ธ ์˜๋ฏธ๋กœ ํ’€์ดํ•˜์ž๋ฉด ๊ตฌํ˜„ ์ƒ์†์— { ๊ฐ€๊น๋‹ค. ์ด๋ฏธ ์ƒ์†๋œ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ ๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ๊ฐ mConnectString = nvc(quot;ConnectStringquot;); mSiteName = nvc(quot;SiteNamequot;); ์ฒด ์กฐํ•ฉ(Component ๋ฐฉ์‹)์„ ์„ ํ˜ธํ•˜๋ผ๋Š” ์˜๋ฏธ์ธ ๊ฒƒ์ด๋‹ค. ์ค‘์š”ํ•œ } ๊ฒƒ์€ ๊ฐ์ฒด ์กฐํ•ฉ์ด ๋‚ด๋ถ€์ ์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†(์ง€๊ธˆ์˜ ์šฉ์–ด๋กœ๋Š” } Interface Implementation)์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด์™€ ๊ด€๋ จํ•ด catch (Exception exp) { ใ€ŽGoF Design Patternใ€ ์ €์ž์ธ Eric Gamma์˜ ์ธํ„ฐ๋ทฐ๋ฅผ ์ฐธ ์˜ ExceptionManager.Publish(exp); ๊ณ ํ•˜๋ฉด ๋ณด๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. } } ์‹œ์Šคํ…œ ์ค‘์ง€๊ฐ€ ์—†๋Š” ์œ ์—ฐํ•œ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค๊ธฐ public static string SiteName ํ•„์ž๋Š” ๋ช‡ ๊ฐ€์ง€ ํŒจํ„ด์˜ ์กฐํ•ฉ์„ ์˜ˆ๋กœ ๋“ค์–ด ์‹œ์Šคํ…œ์˜ ์ค‘์ง€ ์—†์ด 160 m a s o
  • 4. Subscriber ํŒจํ„ด์„ ์ ์šฉํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค. { get { return mSiteName; } } public static string ConnectString { get { return mConnectString; } } Get Info Load Change } Config File Handler Client A Notify using System.Collections.Specialized; using Microsoft.ApplicationBlocks.ExceptionManagement; FileSystemWatcher Configuration File public class WebAppConfigHandler : .NotifyFilter App.config IConfigurationSectionHandler Web.config { public object A Smart Developer IConfigurationSectionHandler.Create(object parent, object <๊ทธ๋ฆผ 1> Publisher-Subscriber์™€ Configuration Handler์˜ ๋งŒ๋‚จ configContext, Xml.XmlNode input) { // 1. xpath๋ฅผ ํ†ตํ•œ ์ฒ˜๋ฆฌ <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ™์ด ์„ค์ • ํŒŒ์ผ์„ ๊ฐ์‹œํ•˜๋Š” ํ•˜๋‚˜์˜ Monitor(Wa // 2. xml elements enumeration tcher)๋ฅผ ํ•˜๋‚˜์˜ Publisher๋กœ ๋งŒ๋“ค๊ณ  Handler๋“ค์„ Subscriber // 3. NameValueSectionHandler์˜ ์ด์šฉ ๋กœ ๋งŒ๋“ค๋ฉด ๋  ๊ฒƒ์ด๋‹ค. ์ค‘์š”ํ•œ ๊ฒƒ์€ ์„ค์ • ํŒŒ์ผ์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๊ฐ์ง€ NameValueCollection nvc; NameValueSectionHandler handler; ํ•˜๋Š” ๊ฐ์‹œ์ž(Watcher)๋ฅผ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š๋ƒ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ try { .NET 2.0 SDK๋ถ€ํ„ฐ๋Š” System.IO ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ File handler = new NameValueSectionHandler(); nvc = SystemWatcher.NotifyFileter๋ฅผ, ์ž๋ฐ”์—์„œ๋„ ๊ฐœ๋ฐœ์ž์— ์˜ํ•ด ๋งŒ (NameValueCollection)handler.Create(parent, configContext, ๋“ค์–ด์ง„ ์œ ์‚ฌํ•œ NotifyFilter๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค(๊ตฌํ˜„ ๋ชจ๋“ˆ์€ ์ฐธ๊ณ  input); ์ž๋ฃŒ์— ์†Œ๊ฐœ). } catch (Exception exp) { ์ด๋‹ฌ์˜ ๋””์Šค์ผ“์— ์ˆ˜๋ก๋œ <๋ฆฌ์ŠคํŠธ 2>์˜ Event Handler ๋ถ€๋ถ„์— ExceptionManager.Publish(exp); ํ™”๋ฉด ์ถœ๋ ฅ ๋Œ€์‹  ์„ค์ • ์ •๋ณด๋ฅผ ๊ฐ€์ง„ Handler๋กœ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ํ†ต๋ณด throw exp; } ํ•˜๋Š” ๋กœ์ง๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด ๋Ÿฐํƒ€์ž„์‹œ์—๋„ ์œ ์—ฐํ•œ ๋ณ€ํ™”๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ”„ return nvc; ๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ํŽ˜์ด์ง€ ์ œ์•ฝ ํƒ“์— ์™„๋ฒฝํ•œ ์†Œ์Šค } ์ฝ”๋“œ๋ฅผ ๋ณด์—ฌ์ฃผ์ง€ ๋ชปํ•ด ์•„์‰ฝ์ง€๋งŒ, ํฐ ํžŒํŠธ๋Š” ๋ชจ๋‘ ์ฃผ์—ˆ์œผ๋ฏ€๋กœ ๋‚˜ } ๋จธ์ง€์˜ ๊ตฌํ˜„์€ ๋…์ž๋“ค์˜ ๋ชซ์œผ๋กœ ๋‚จ๊ธฐ๊ณ ์ž ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ๋ถ€์ž‘์šฉ์ด๋ผ ํ•  ๋งŒํ•œ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋œ ๋‹ค. ๋ฐ”๋กœ ํŒŒ์ผ ์ •๋ณด์™€ Handler๊ฐ„์˜ ๋ฐ์ดํ„ฐ ์ผ์น˜์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ด๋‹ค. ํ”„๋กœ๊ทธ๋žจ ๋กœ๋”ฉ์‹œ์—๋งŒ ํ•ด๋‹น ์ •๋ณด๋ฅผ ๋กœ๋“œํ•˜๊ธฐ ๋•Œ๋ฌธ ์ด๋‹ฌ์˜ ๋””์Šค์ผ“ : Pattern.zip ์— ์„ค์ • ํŒŒ์ผ์˜ ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝํ•˜๋”๋ผ๋„ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ ์žˆ๋Š” Handler์˜ ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ตญ ์‹œ์Šคํ…œ์„ ์ž ์‹œ ์ฐธ๊ณ  ์ž๋ฃŒ 1. Design Principles from Design Patterns(Eric Gamma์˜ ์ธํ„ฐ๋ทฐ), ์ •์ง€์‹œํ‚ค๊ณ  ์žฌ ์‹œ์ž‘ํ•จ์œผ๋กœ์จ ์„ค์ • ํŒŒ์ผ ์ •๋ณด์˜ ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ์ฝ http://www.artima.com/lejava/articles/designprinciplesP.html ์–ด์˜ค๋Š” ๋ฐฉ๋ฒ• ๋ฐ–์—๋Š” ์—†๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ž๋ฉด, ํŒŒ์ผ I/O๋ฅผ ์ค„์ด๋‹ค ๋ณด 2. Windows File System Watcher for Java, http://www2.hawaii.edu/~qzhang/FileSystemWatcher/index.html ๋‹ˆ Handler์™€ ์„ค์ • ํŒŒ์ผ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•ด ์‹œ์Šคํ…œ์˜ 3. Eric Gamma et al, ใ€ŽDesign Patterns : Elements of Reusable Object Oriented ์ค‘์ง€ ์—†์ด, ๋Ÿฐํƒ€์ž„(Runtime)์‹œ์— ๊ฐ์ฒด์˜ ์†์„ฑ์„ ์ž์œ ๋กญ๊ฒŒ ๋ณ€๊ฒฝ Softwareใ€ Addison Wesley , 4. FileSystemWatcher.NotifyFilter, ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ค์ • ํŒŒ์ผ์˜ ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋  ๋•Œ http://msdn2.microsoft.com/en- us/library/system.io.filesystemwatcher.notifyfilter(VS.80).aspx Handler๊ฐ€ ๋‹ค์‹œ ์„ค์ • ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ์ฝ์–ด์˜ค๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ 5. Frank Buschmann et al, ใ€ŽPattern-Oriented Software Architecture : A System ํ•œ๋‹ค๋ฉด Handler์™€ ํŒŒ์ผ๊ฐ„์˜ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ of Patternsใ€Volume 1, Wiley , 6. Douglas Schmidt et al, ใ€ŽPattern-Oriented Software Architectureใ€ ,Volume 2, ๋‹ค. ๋‹จ ์ฃผ๊ธฐ์ ์œผ๋กœ ์„ค์ • ํŒŒ์ผ์„ ์ฒดํฌํ•˜๋Š” ๋กœ์ง์„ ๋„ฃ๋Š”๋‹ค๋Š” ๊ฒƒ์€ Wiley ์„ฑ๋Šฅ์ƒ์˜ ์ €ํ•˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ๊ฐ•๊ตฌํ•ด์•ผ ํ•œ 7. ํŒจํ„ด์˜ 5๊ฐ€์ง€ ๋ฒ•์น™, ์†์˜์ˆ˜, ๋ฐฑ๋ฒ”ํ˜ธ, http://www.devpia.com/DevStudy/Lecture/LectureDetail.aspx?nSemiID=1171 ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด DIP๋ฅผ ์ ์šฉํ•œ Publisher- m a s o 161