|
ÀÌ ¹øÈ£¿¡ À̾߱âÇØ º¸°íÀÚ ÇÏ´Â µðÀÚÀÎ ÆÐÅÏÀº ¡°Mediator[1]¡±¶ó´Â À̸§À» °¡Áö°í ÀÖ´Ù. »çÀüÀ» ã¾Æº¸¸é ¡®ÁßÀçÀÚ¡¯ Á¤µµÀÇ Àǹ̸¦ °¡Áö°í ÀÖ´Â ´Ü¾îÀÌ´Ù. ÀÌ ÆÐÅÏÀ» ÀÌ ¹øÈ£ÀÇ À̾߱⠰Ÿ®·Î »ïÀº ÀÌÀ¯´Â Áö³ È£ÀÇ Observer ÆÐÅÏ[1]ÀÇ ¡®°ü·Ã ÆÐÅÏ¡¯ Àý¿¡¼ ¾ð±ÞÇßµíÀÌ ObserverÆÐÅÏ°ú À¯»çÇÑ ºÎºÐÀÌ ÀÖ°í ±íÀÌ »ý°¢ÇØ º¼ ¹®Á¦¸¦ ´Ù·ç°í ÀÖ´Ù°í »ý°¢Çϱ⠶§¹®ÀÌ´Ù. 1. ÀÇÁ¸¼º(dependency)ÀÇ ¹ß°ß Áö³ È£¿¡ À̾߱âÇßµíÀÌ °´Ã¼ÁöÇ⠽ýºÅÛÀÇ ±âº»±¸Á¶¸¦ °¡¸¸È÷ »ìÆ캸¸é, ±× ±¸Á¶´Â °´Ã¼µé°ú ±× °´Ã¼µé »çÀÌÀÇ ¾î¶² ƯÁ¤ÇÑ °ü°è(association)·Î µÇ¾î ÀÖÀ¸¸ç, ±× °ü°è¸¦ µû¶ó¼, °´Ã¼µé »çÀÌ¿¡ ¾î¶² ƯÁ¤ÇÑ ÇàÀ§(behavior)¸¦ À¯¹ß½ÃÅ°´Â ¸Þ½ÃÁö(message)°¡ ¿Ô´Ù °¬´Ù ÇÏ´Â °ÍÀ¸·Î ÀÌÇØÇÒ ¼ö ÀÖ´Ù°í »ý°¢ÇÑ´Ù. ±×·±µ¥, °´Ã¼ÁöÇ⠽ýºÅÛÀ» µðÀÚÀÎ ÇÒ ¶§, ¹Ù·Î ÀÌ ºÎºÐ¿¡¼ ¿ì¸®°¡ ÁÖÀǸ¦ ±â¿ï¿©¾ß ÇÏ´Â ºÎºÐÀÌ º¸ÀδÙ. °´Ã¼µé »çÀÌÀÇ ¸Þ½ÃÁö Àü´ÞÀ» ÅëÇÑ ÀÇÁ¸¼º(dependency)ÀÌ ¹Ù·Î ±×°ÍÀÌ´Ù. Çϳª ÀÌ»óÀÇ °´Ã¼µéÀÌ ¸ð¿©¼ ¾î¶² ƯÁ¤ÇÑ °ü°è¸¦ À¯ÁöÇÔÀ¸·Î½á, ´Ù½Ã ¸»Çؼ, ¼·Î°£ÀÇ ¾î¶² ÀÇÁ¸¼ºÀ» °¡ÁüÀ¸·Î½á ÇØ´ç °´Ã¼ÁöÇ⠽ýºÅÛÀÌ º»·¡ ÀǵµÇÏ´ø ÇàÀ§¸¦ °¡Áö°Ô µÈ´Ù´Â Á¡¿¡¼´Â ÀÌ·¯ÇÑ ÀÇÁ¸¼ºÀÌ ÇÊ¿¬ÀûÀÌÁö¸¸, ´ëºÎºÐÀÇ °æ¿ì¿¡´Â ÀÌ·± °´Ã¼µé »çÀÌÀÇ ÀÇÁ¸¼ºÀ» ÃÖ¼ÒÈÇÏ´Â °ÍÀÌ Àüü ½Ã½ºÅÛÀÇ ¾ÈÁ¤¼ºÀ» Áõ´ë ½ÃÅ°°í °ü¸®¸¦ ½±°Ô ÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¶ÇÇÑ ÇØ´ç ½Ã½ºÅÛÀ» ±¸¼ºÇÏ´Â ÄÞÆ÷³ÍÆ® Áß¿¡¼ Àç»ç¿ë¼ºÀÌ Å©´Ù°í ÆǴܵǴ °Íµé¿¡ ´ëÇؼ´Â ÇØ´ç ÄÞÆ÷³ÍÆ®°¡ ´Ù¸¥ ÄÞÆ÷³ÍÆ®¿ÍÀÇ °ü°è¸¦ ÅëÇÑ ÇàÀ§¸¦ Áö¿ªÈ(localization)ÇÔÀ¸·Î½á ÇØ´ç ½Ã½ºÅÛÀ» º¸´Ù À¯¿¬ÇÏ°Ô ¸¸µé»Ó¸¸ ¾Æ´Ï¶ó, ±× ºÎºÐÀ» ´Ù¸¥ ½Ã½ºÅÛ¿¡¼µµ °ÅÀÇ ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖ´Â Àç»ç¿ë¼ºÀ» ³ôÀÏ ¼ö ÀÖÀ» °ÍÀÌ´Ù. Mediator ÆÐÅÏÀº ¹Ù·Î À§¿¡¼ À̾߱âÇÑ µÎ °¡Áö ¹®Á¦, Áï, °´Ã¼°£ÀÇ ÀÇÁ¸¼ºÀ» ÃÖ¼ÒÈ ½ÃÅ°°í, ÇàÀ§¸¦ Áö¿ªÈ ½Ãų ¼ö ÀÖ´Â ÇÑ °¡Áö È¿°úÀûÀÎ ¹æ¾ÈÀ» Á¦½ÃÇØ ÁÖ°í ÀÖ´Ù. ¹°·Ð Àý´ëÀûÀÎ ÇعýÀº ¾Æ´Ï´Ù. ÇÏÁö¸¸, ÀÌ µÎ °¡Áö (Áß¿äÇÑ) ¹®Á¦¸¦ »ý°¢ÇÏ°Ô ¸¸µç´Ù´Â Á¡¿¡¼ Àß »ìÆ캼 ¸¸ÇÑ °¡Ä¡°¡ ÀÖ´Â ÆÐÅÏÀ̶ó°í »ý°¢ÇÑ´Ù. ³Ê¹« ÀϹÝÀûÀÌ°í Ãß»óÀûÀ¸·Î À̾߱⸦ Çß´Ù. ±¸Ã¼ÀûÀÎ ¿¹¸¦ µé¾î¼ ´Ù½Ã ¹®Á¦ÀÇ Á߿伺À» »ý°¢ÇØ º¸ÀÚ. Mediator ÆÐÅÏÀ» À̾߱âÇÒ ¶§ Ç×»ó ¾ð±ÞÇÏ´Â ¿¹·Î ´ëºÎºÐÀÇ °³¹ßÀÚ³ª ½Ã½ºÅÛ µðÀÚÀ̳ʰ¡ ½±°Ô Á¢ÇÒ ¼ö ÀÖ´Â ¡®´ÙÀ̾˷α×
¹Ú½º(dialog box)¡¯°¡ ÀÖ´Ù. ±×¸² 1Àº ÀͽºÇ÷η¯ÀÇ ÆÄÀÏ ¿±â ´ÙÀÌ¾Ë·Î±× ¹Ú½º¸¦ ÇÊÀÚ°¡ ĸÃÄ(capture)ÇÑ
°ÍÀÌ´Ù.
±×¸² 1. ÆÄÀÏ ¿±â ´ÙÀÌ¾Ë·Î±× ¹Ú½º ±×¸² 1ÀÇ ÆÄÀÏ ¿±â ´ÙÀÌ¾Ë·Î±× ¹Ú½º¸¦ º¸¸é¼ À§¿¡¼ À̾߱â Çß´ø °ÍÀ» ´Ù½Ã »ý°¢ÇØ º¸ÀÚ. ±×¸² 1À» º¸¸é ¡®Ã£´Â À§Ä¡¡¯¸¦
Ç¥½ÃÇÏ´Â ComboBox¿¡ ³ªÅ¸³ª ÀÖ´Â µð·ºÅ丮¿¡ ¼ÓÇØ ÀÖ´Â µð·ºÅ丮¿Í ÆÄÀϵéÀÌ ListBox¿¡ ³ªÅ¸³ª ÀÖ´Ù. ±× Áß¿¡¼
¡®designpatterns1.html¡¯À̶ó´Â ÆÄÀÏÀÌ ¹ÝÀüµÇ¾î ¼±ÅõǾî ÀÖ°í, ±× ¼±ÅÃµÈ ÆÄÀÏÀº ´Ù½Ã ListBox¾Æ·¡ÀÇ ¡®ÆÄÀÏ
À̸§¡¯À¸·Î À̸§ ºÙ¿©Áø ComboBox¿¡ Ç¥½ÃµÇ¾îÁ® ÀÖ´Ù. ¿©±â¼ ´«¿©°Ü º¼ ³»¿ë Áß¿¡ Çϳª´Â ListBox¿¡ ¼±ÅÃµÈ ÆÄÀÏÀÌ ±× ¾Æ·¡
ComboBox¿¡ Ç¥½ÃµÈ´Ù´Â °ÍÀÌ´Ù. °Å²Ù·Î À̾߱âÇؼ, ListBox¿¡¼ ¼±ÅõǾîÁöÁö ¾ÊÀº ÆÄÀÏÀº ComboBox¿¡ Ç¥½ÃµÇÁö
¾Ê´Â´Ù. Áï, ComboBox´Â ListBox¿¡ ÀÇÁ¸¼ºÀ» °¡Áø´Ù. ´Ù¸¥ ºÎºÐÀ» º¸ÀÚ. ÆÄÀÏ ¿±â ´ÙÀÌ¾Ë·Î±× ¹Ú½ºÀÇ Á¦ÀÏ ¾Æ·¡¿¡ À§Ä¡ÇÑ
¡®ÆÄÀÏ Çü½Ä¡¯À̶ó À̸§ ºÙ¿©Áø ComboBox¿¡´Â ¡®HTML ÆÄÀÏ¡¯À̶ó´Â ³»¿ëÀÌ Ç¥½ÃµÇ¾î ÀÖÀ¸¸ç, ÀÌ ³»¿ë¿¡ µû¶ó¼,
ListBox¿¡´Â html ÆÄÀÏ Çü½ÄÀ» °¡Áö´Â ÆÄÀϸ¸ÀÌ Ç¥½ÃµÇ°í ÀÖ´Ù. Áï, ÆÄÀÏ filteringÀ» ÇÏ°í ÀÖ´Ù. ÀÌ µÎ °´Ã¼ÀÇ
°ü°è¸¦ º¸¸é ¾Õ¿¡¼¿Í´Â ´Ù¸£°Ô ListBox°¡ ComboBox¿¡ ÀÇÁ¸¼ºÀ» °¡Áö°í ÀÖ´Ù. À̾߱⸦ ´Ü¼øÈ ½ÃÅ°±â À§Çؼ ÆÄÀÏ ¿±â¿¡
¼ÓÇØ ÀÖ´Â °´Ã¼µé Áß¿¡¼ À§¿¡¼ ¾ð±ÞÇÑ °´Ã¼µé¸¸À» °¡Áö°í ±× °ü°è¸¦ Ŭ·¡½º ´ÙÀ̾î±×·¥À¸·Î Ç¥½ÃÇÏ¿© º¸¸é ±×¸² 2¿Í °°Àº ÀÇÁ¸¼ºÀÌ
³ªÅ¸³¯ °ÍÀÌ´Ù(±×¸² 2ÀÇ °¢ °´Ã¼°¡ ´Ü ÇϳªÀÇ Å¬·¡½º·Î µÇ¾î ÀÖ´Ù°í °¡Á¤ÇÑ´Ù).
±×¸² 2. ±×¸² 1ÀÇ ´ÙÀÌ¾Ë·Î±× ¹Ú½º¸¦ ±¸¼ºÇÏ´Â ÁÖ¿ä °´Ã¼ÀÇ ÀÇÁ¸¼º °ü°è ±×¸² 2¸¦ º¸¸é °¢ °´Ã¼ÀÇ ÀÇÁ¸¼ºÀÌ ´«¿¡ ½±°Ô µé¾î¿Â´Ù. ¿©±â¼ ±×¸² 2¸¦ º¸°í Á» ´ä´äÇÔÀ» ´À²¸¾ß ÇÒ °ÍÀÌ´Ù. À§¿¡¼ ListBox´Â ¹«·Á ¼¼ °³ÀÇ °´Ã¼¿Í ÀÌ·± Àú·± ÀÇÁ¸¼ºÀ» °¡Áö°í ÀÖ´Ù. ±×¸² 2ÀÇ µðÀÚÀδë·Î ±×¸² 1ÀÇ ´ÙÀÌ¾Ë·Î±× ¹Ú½º¸¦ ±¸ÇöÇß´Ù°í °¡Á¤ÇØ º¸ÀÚ. ÀÌ °æ¿ì¿¡ ListBox¸¦ ±¸¼ºÇÏ°í ÀÖ´Â Äڵ忡´Â ListBox°¡ °¡Áö°í ÀÖ´Â °íÀ¯ÀÇ ±â´É, Áï, ÆÄÀϽýºÅÛÀÇ ³»¿ëÀ» º¸¿© ÁÖ´Â ±â´É ¿Ü¿¡ ´Ù¸¥ ¼¼ °³ÀÇ °´Ã¼¿ÍÀÇ ÀÇÁ¸¼º¿¡ µû¸¥ Äڵ尡 µé¾î°¡°Ô µÉ °ÍÀÌ´Ù. ±¸Ã¼ÀûÀ¸·Î À̾߱âÇؼ, ¡®Ã£´ÂÀ§Ä¡ComboBox¡¯¿Í ¡®ÆÄÀÏÇü½ÄComboBox¡¯ÀÇ »óź¯È¸¦ °üÂûÇÏ´Â Äڵ尡 µé¾î°¥ °ÍÀÌ°í(Observer ÆÐÅÏ°ú À¯»çÇÑ À̾߱â?), ¡®ÆÄÀÏÀ̸§ComboBox¡¯¸¦ À§ÇÑ ÀÚ½ÅÀÇ »óÅ º¯È¸¦ ¾Ë·ÁÁÖ´Â ÀÎÅÍÆäÀ̽º¸¦ À§ÇÑ Äڵ尡 µé¾î°¥ °ÍÀÌ´Ù. Á¤¸»·Î ÀÌ·¸°Ô µðÀÚÀÎÇÏ°í ±¸ÇöÀ» ÇßÀ»±î? Àý´ë·Î ¾Æ´Ï´Ù. ¸¸¾à ÀÌ·¸°Ô ±¸ÇöÀ» Çß´Ù¸é, ÀÌ ¼Ò½º´Â ±×¸² 1À» À§ÇÑ ´ÙÀÌ¾Ë·Î±× ¹Ú½º¿¡¼¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Â Äڵ尡µÇ¾î ¹ö¸± °ÍÀÌ´Ù. ±×¸² 1°ú °°Àº ´ÙÀÌ¾Ë·Î±× ¹Ú½º°¡ ³Ê¹« Ư¼öÇÑ °æ¿ì¿¡¸¸ »ç¿ëµÇ¾îÁö´Â °´Ã¼¶ó¸é À̾߱Ⱑ Á¶±Ý ´Ù¸£Áö¸¸, ´Ù¸¥ °÷¿¡µµ ¾ÆÁÖ À¯¿ëÇÏ°Ô »ç¿ëµÇ¾î Áú ¼ö ÀÖ´Â ListBox¿Í ComboBox¸¦ À§ÀÇ °¡Á¤´ë·Î °ÇÑ ÀÇÁ¸¼ºÀ» ÁÖ¾î µðÀÚÀÎÇÏ°í ±¸ÇöÇÑ´Ù´Â °ÍÀº ¹ÌÄ£ÁþÀÌ µÉ °ÍÀÌ´Ù. ±× ÀÌÀ¯´Â Windows ÇÁ·Î±×·¡¹ÖÀ» ÇÑ ¹øÀÌ¶óµµ °ü½É ÀÖ°Ô º» °³¹ßÀÚ¶ó¸é Àß ¾Ë°í ÀÖÀ» °ÍÀÌ´Ù. ¡®Hello World¡¯¶ó´Â ¹®ÀÚ¸¦ Ç¥½ÃÇÏ´Â À©µµ¿ì¸¦ Çϳª ±×¸®´Âµ¥ ÇÊ¿äÇÑ Äڵ尡 °ÅÀÇ 50¶óÀÎ Á¤µµ°¡ ÇÊ¿äÇÏ´Ù´Â °ÍÀ». 2. ±×·³ ¾î¶»°Ô ÇÒ °ÍÀΰ¡? ±×·± ¾î¶»°Ô ÇÏ¸é ±×¸² 2¿Í °°Àº ÇÊ¿¬ÀûÀÎ ÀÇÁ¸¼ºÀ» ÃÖ¼ÒÈÇÏ¿©, »ç¿ëµÈ À§Á¬(Widget)ÀÇ Àç»ç¿ë¼ºÀ» ³ôÀÏ ¼ö ÀÖÀ»±î? °¡Àå
½±°Ô »ý°¢ÇÒ ¼ö ÀÖ´Â °ÍÀº ±×¸² 1°ú °°Àº ´ÙÀÌ¾Ë·Î±× ¹Ú½º°¡ ÇØ¾ß µÇ´Â ÇàÀ§¸¦ Çϱâ À§Çؼ ÇÊ¿¬ÀûÀÎ ¸Þ½ÃÁö Àü´ÞÀ» ´Ù¸¥ °´Ã¼¿¡
À§ÀÓ(delegation)ÇÏ´Â °ÍÀÌ´Ù. Á» ½±°Ô À̾߱âÇϸé, °¢ °´Ã¼°¡ ÀڽŰú ÀÇÁ¸¼ºÀ» °¡Áö°í ÀÖ´Â °´Ã¼¿¡ Á÷Á¢ ¸Þ½ÃÁö¸¦ Àü´ÞÇÏ´Â
°ÍÀÌ ¾Æ´Ï¶ó, ÀÌ ÀÏÀ» ´Ù¸¥ °´Ã¼¿¡ ºÎŹÇÏ´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á, °¢ °´Ã¼´Â ¸Þ½ÃÁö Àü´ÞÀ» ´ëÇàÇÏ´Â °´Ã¼ÀÇ ÀÏ°üµÈ ÀÎÅÍÆäÀ̽º¸¸
±â¾ïÇÏ°í ÀÖÀ¸¸é µÇ°í, ¸Þ½ÃÁö¸¦ Àü´ÞÇÏ´Â ÀÌ ´ëÇà °´Ã¼¸¦ À§ÇÑ µ¿ÀÏÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÔÀ¸·Î½á, ´Ù¸¥ ¾î¶² °´Ã¼¿¡µµ ÀÇÁ¸¼ºÀ» °¡ÁöÁö
¾Ê´Â °´Ã¼°¡ µÉ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ÀÌ ¹æ¹ýÀ» Á¤¸®ÇÑ °ÍÀÌ ¹Ù·Î Mediator ÆÐÅÏÀÌ´Ù. Á»´õ ±¸Ã¼ÀûÀ¸·Î ±× ÀÌÁ¡À» º¸À̱â À§Çؼ
±×¸² 2ÀÇ µðÀÚÀο¡ ÀÌ ¹æ¹ý(Mediator ÆÐÅÏ)À» Àû¿ëÇÏ¿© º¸¾Ò´Ù. ±×¸² 3Àº ±×¸² 2¿¡ Mediator ÆÐÅÏÀ» Àû¿ëÇÏ¿© ´Ù½Ã
µðÀÚÀÎÇÑ °ÍÀÌ´Ù.
±×¸² 3. ±×¸² 2¿¡ Mediator ÆÐÅÏÀ» Àû¿ëÇÑ Å¬·¡½º ´ÙÀ̾î±×·¥ ±×¸² 3¿¡ º¸¸é ListBox¿Í ComboBox µéÀº ±×¸² 2ÀÇ µðÀÚÀÎó·³ ¼·Î Á÷Á¢ÀûÀ¸·Î ¸Þ½ÃÁö¸¦ Àü´ÞÇÏÁö ¾Ê°í, FileDialogMediator¸¦ ÅëÇÏ´Â °£Á¢ÀûÀÎ ¹æ¹ýÀ» ÅÃÇÏ°í ÀÖ´Ù. FileDialogMediator´Â ÀÌ µé °´Ã¼µé »çÀÌ¿¡¼ ¸Þ½ÃÁö Àü´ÞÀ» ´ë½ÅÇØÁÖ´Â ±â´ÉÀ» ÇÏ°í ÀÖ´Ù. À̸¦ À§Çؼ FileDialogMediator´Â WidgetÀÌ ÀÚ½ÅÀÇ »óÅ°¡ º¯Çß´Ù´Â °ÍÀ» ¾Ë·ÁÁÙ ¼ö ÀÖ´Â Åë·Î·Î widgetChanged()¶ó´Â À̸§ÀÇ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ°í ÀÖ°í, °¢ WidgetÀº FileDialogMediator·Î Widget °íÀ¯ÀÇ ¸Þ½ÃÁö ±³È¯À» À§ÇÑ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ°í ÀÖ´Ù. ±×¸² 3ÀÇ ¿¹¸¦ º¸¸é ComboBox´Â setText() getText()¶ó´Â ÀÎÅÍÆäÀ̽º¸¦ ListBox´Â setTextField()¿Í getTextField()¶ó´Â ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ°í ÀÖ´Ù. ±×¸² 3°ú °°ÀÌ µðÀÚÀÎÇÔÀ¸·Î½á, °¢ Widgetµé °£¿¡ Á¸ÀçÇÏ´ø ÀÇÁ¸¼ºÀÌ »ç¶óÁö°í, ±× ÇàÀ§°¡
FileDialogMediator¶ó´Â °´Ã¼¿¡ ÁýÁߵǴ °á°ú¸¦ ÃÊ·¡Çß´Ù. Áï, ¾Õ¿¡¼ À̾߱âÇÑ´ë·Î ½Ã½ºÅÛÀÇ ÀÇÁ¸¼ºÀº ÁÙÀÌ°í, ÇàÀ§¿¡
´ëÇؼ´Â Áö¿ªÈ¸¦ °¡Á®¿À°Ô µÇ¾ú´Ù. ÀÌ·± °á°ú´Â ÇàÀ§¿¡ º¯È¸¦ ÁÖ¾î¾ß ÇÒ Çʿ伺ÀÌ ÀÖÀ» ¶§¿¡´Â Mediator ºÎºÐ¸¸ °íÃÄÁÖ¸é µÇ°í
´Ù¸¥ WidgetµéÀº ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù´Â Àǹ̷νá, °á°úÀûÀ¸·Î´ÂWidgetÀÇ Àç»ç¿ë¼ºÀ» ³ôÀÌ°Ô µÇ¾ú´Ù.
3. Mediator ÆÐÅÏ ±×¸² 3ÀÇ µðÀÚÀÎÀ» ÀϹÝÈ ½ÃÄѼ GoFÃ¥ÀÇ ÀúÀÚµéÀÌ Mediator ÆÐÅÏÀ̶õ À̸§À» ºÙ¿©¼ Á¤¸®ÇÏ¿© ³õ¾Ò´Ù. ±×¸² 4´Â GoF
Ã¥ÀÇ Mediator ÆÐÅÏÀ» ÇÊÀÚ°¡ UML·Î ¹Ù²Ù¾î Ç¥ÇöÇÑ °ÍÀ̸ç, ±×¸² 3ÀÇ ¿¹¿Í ºñ±³Çϸé FileDialogMediator¸¦
Mediator·Î WidgetÀ» Colleague·Î ÀϹÝÈ µÇ¾î Ç¥ÇöµÇ¾î ÀÖ´Ù.
±×¸² 4. Mediator ÆÐÅÏ ¾î¶²°¡? ÇعýÀÌ ³Ê¹« ´Ü¼øÇÏ´Ù°í »ý°¢ÇÏÁö ¾Ê´Â°¡? ÇÏÁö¸¸, ÀÌ·± ´Ü¼øÇÑ ÇعýÀÌ À§¿¡¼ °í¹ÎÇß´ø Áß¿äÇÑ ¹®Á¦µéÀ» ³Ê¹«µµ ¸Úµå·¯Áö°Ô ÇØ°áÇÒ ¼ö ÀÖ´Ù. Áö±Ý±îÁö ºÁ¿Ô´ø ¸ðµç µðÀÚÀÎ ÆÐÅÏÀÌ ±×·¡¿ÔµíÀÌ¡¦ GoFÃ¥ ÀúÀÚµéÀÌ ¹àÈ÷°í ÀÖ´Â Mediator ÆÐÅÏÀÇ Àǵµ¸¦ Á¤¸®ÇÏ´Â °ÍÀ¸·Î ÀÌ ¹ø ±ÛÀ» ¸¶¹«¸® Áþ°Ú´Ù. Àǵµ(intent) 4. °ü·Ã ÆÐÅÏ ÀÌ ÆÐÅÏÀÇ ÀúÀÚµéÀÌ °ü·ÃÀÌ ÀÖ´Ù°í ¾ð±ÞÇÑ ÆÐÅÏ Áß¿¡´Â ObserverÆÐÅÏÀÌ ÀÖ´Ù. Áö³ È£¸¦ ÀÐ¾î º» µ¶ÀÚµéÀº Mediator ÆÐÅÏÀÇ ¾î´À ºÎºÐÀÌ Observer ÆÐÅÏ°ú ºñ½ÁÇÑÁö ÀÌ¹Ì ¾Ë¾ÆÂ÷·ÈÀ» °ÍÀÌ´Ù. ¾î´À ºÎºÐÀÌ °ü·ÃÀÌ Àִ°¡? ¹Ù·Î Mediator°¡ ColleagueÀÇ »óÅ º¯È¸¦ ÁÖ½ÃÇÏ´Â ºÎºÐÀÌ´Ù. ±× ´ÙÀ½ °ü°è°¡ ÀÖ´Ù°í À̾߱âÇÑ ÆÐÅÏÀ¸·Î´Â Fa?ade ÆÐÅÏ[1]ÀÌ ÀÖ´Ù. 5. ¸ÎÀ½¸» GoFÃ¥¿¡ ¼Ò°³µÇ¾î ÀÖ´Â µðÀÚÀÎ ÆÐÅÏÀº º¸¸é º¼¼ö·Ï ½Å±âÇÏ´Ù´Â »ý°¢ÀÌ µç´Ù. ±× ÆÐÅϵéÀ» º¸¸é Çϳª°°ÀÌ ±× ±¸Á¶°¡ Âü ´Ü¼øÇÏ´Ù´Â °ÍÀ» ½±°Ô È®ÀÎÇÒ ¼ö Àִµ¥, ³î¶ó¿î »ç½ÇÀº ÀÌ ´Ü¼øÇÑ ÇعýÀÌ ¿ì¸®ÀÇ ÁÖº¯¿¡ ÀÖ´Â º¹ÀâÇÑ(?) ¼ÒÇÁÆ®¿þ¾î ½Ã½ºÅÛÀÇ ÀϹÝÀûÀÎ ÇعýµéÀ̶ó´Â °ÍÀÌ´Ù. ÇÊÀÚ°¡ ÀÌ »ç½Ç¿¡ ³²´Ù¸£°Ô ³î¶ó´Â ÀÌÀ¯°¡ ÀÖ´Ù. ÇÊÀÚ´Â ´ëÇп¡¼ ¡®Àü»êÇС¯ÀÌ ¾Æ´Ñ ¡®¹°¸®ÇС¯À» Àü°øÇߴµ¥, ±× ºÐ¾ß¿¡¼µµ ¡®´Ü¼ø¼º¡¯Àº ¾ÆÁÖ Áß¿äÇÏ°Ô Ãë±ÞµÇ°í ÀÖ´Â °³³äÀ̱⠶§¹®ÀÌ´Ù. ÀÚ¿¬À» ÀÌÇØÇϴµ¥ ÇعýÀÌ º¹ÀâÇÏ°Ô ³ª¿À¸é ¾îµò°¡¿¡¼ ÀÚ½ÅÀÌ À߸øµÇ¾ú´Ù°í »ý°¢ÇØ ºÁ¾ß ÇÑ´Ù´Â »ý°¢Àº ÀÌ ºÐ¾ß¿¡¼ °ÅÀÇ Àý´ëÀûÀÌ´Ù. ÀÌ·± °üÁ¡¿¡¼ »ý°¢ÇØ º¸¸é, ÀÚ¿¬ÀÌ ´Ü¼ø¼º¿¡ ±â¹ÝÇÏ¿© ¿îÇàµÇ°í ÀÖ°í, µû¶ó¼, Àΰ£ÀÇ ¸ðµç ÀÛ¿ëµµ ±×·¯ÇÒ ¼ö ¹Û¿¡ ¾øÀ¸¸ç °á°úÀûÀ¸·Î µðÀÚÀÎ ÆÐÅÏÀ¸·Î Á¤¸®µÈ ¿©·¯ ¹®Á¦µéÀÇ Çعýµéµµ ´Ü¼øÇÑ °ÍÀÌ ´ç¿¬ÇÑ °á°ú°¡ ¾Æ´Ò±î? ³Ê¹« Áö³ªÄ£ ºñ¾àÀΰ¡? ^(^ ´ÙÀ½ È£ÀÇ ÁÖÁ¦°Å¸®·Î ¶Ç ´Ù¸¥ Èï¹Ì·Î¿î ²¨¸®¸¦ ã¾ÆºÁ¾ß °Ú´Ù. Âü°í ¹®Çå [1] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides,
[2] Mark Grand, Patterns in Java, volume 1, Wiley, 1998
|
oonewsletter - 2000/9/2 |