µðÀÚÀÎ ÆÐÅÏÀÇ ÀÔ¹®¼. GoF°¡ Á¤¸®ÇÑ 23°³ÀÇ µðÀÚÀÎ ÆÐÅÏÀ» Çϳª¾¿ ´Ù·ç¸é¼ °´Ã¼ ÁöÇâÀ» Àß ¸ð¸£´Â Ãʺ¸ÀÚµµ ÀÌÇØÇϱ⠽±µµ·Ï Á¤¸®ÇÏ°í ÀÖ´Ù. ´Ü¼øÇÑ ÀÌ·ÐÀ̳ª ³í¸®À» Á¦½ÃÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ÆÐÅÏÀ» »ç¿ëÇÑ ±¸Ã¼ÀûÀÎ ÇÁ·Î±×·¥À» Java ¾ð¾î·Î ±â¼úÇÏ¿© ½ÇÁ¦·Î µ¿ÀÛ½ÃÅ°°í ÀÖ´Ù.
µðÀÚÀÎ ÆÐÅÏÀº ¸Õ Àå·¡¸¦ À§ÇØ ¹è¿ì´Â °ÍÀÌ ¾Æ´Ï´Ù. ¸ÅÀÏ »ç¿ëÇÏ°í ÀÖ´Â ÇÁ·Î±×·¥À» »õ·Î¿î °üÁ¡¿¡¼ ¹Ù¶óº¼ ¼ö ÀÖ°Ô ÇØÁÖ°í, Àç»ç¿ëÇϱ⠽±°í, ±â´É È®ÀåÀ» ¼Õ½±°Ô ÇÏ´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ¸¸µé±â À§ÇÑ À¯ÀÍÇÑ ±â¹ýÀÌ´Ù.
ÇÁ·Î±×·¥À» °³¹ßÇÒ ¶§ ¿¹Àü°ú °°Àº ÀÛ¾÷À» ¹Ýº¹ÇÏ°í ÀÖ´Ù´Â ´À³¦ÀÌ µé ¶§°¡ ÀÖ½À´Ï´Ù. °æÇèÀÌ ½×Àϼö·Ï ÀÌ·¯ÇÑ ÀڽŸ¸ÀÇ ÆÐÅÏÀÌ ¸Ó¸® ¼Ó¿¡ ÃàÀûµÇ°í, ±× ÆÐÅÏÀ» ´ÙÀ½ °³¹ß¿¡ Àû¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 4¸íÀº °³¹ßÀÚÀÇ "°æÇè"À̳ª "³»ÀûÀÎ ÃàÀû"À» <µðÀÚÀÎ ÆÐÅÏ>À̶ó´Â ÇüÅ·ΠÁ¤¸®ÇÏ¿´½À´Ï´Ù. ÀÌ 4¸íÀ» the Gang of Four ¶Ç´Â GoF¶ó°í ºÎ¸¨´Ï´Ù.
ÀÌ Ã¥¿¡¼´Â ÀÚ¹Ù ¾ð¾î¸¦ ÅëÇØ GoF°¡ Á¤¸®ÇÑ 23°³ÀÇ µðÀÚÀÎ ÆÐÅÏÀ» Çϳª¾¿ ¾Ë±â ½±°Ô ¼³¸íÇÏ°í ÀÖ½À´Ï´Ù. ÀÌÀü ¹öÀü¿¡¼ ´Ù¼Ò ºÎÁ·Çß´ø ¼³¸í°ú ¼ö¸¹Àº µ¶ÀÚµéÀÇ Çǵå¹éÀ» ¹Ý¿µÇÏ¿© ±¸¼º°ú ³»¿ëÀ» Àü¸éÀûÀ¸·Î ¹Ù²Û ¡®°³Á¤ÆÇ¡¯À¸·Î »õ·Ó°Ô ±¸¼ºÇÏ¿´½À´Ï´Ù.
ÀÌ Ã¥Àº µðÀÚÀÎ ÆÐÅÏÀÇ Ã¥ÀÌÁö¸¸, Java ¾ð¾îÀÇ ±â´É¿¡ °üÇÑ º¸ÃæÀûÀÎ Çؼ³µµ ÇÏ°í Àֱ⠶§¹®¿¡ Àд µ¿¾È¿¡ Java¿¡ ´ëÇÑ ÀÌÇصµ ±í¾îÁú °ÍÀÔ´Ï´Ù. ƯÈ÷ Ãß»ó Ŭ·¡½º³ª ÀÎÅÍÆäÀ̽ºÀÇ ¸ñÀûÀ» Á¤È®ÇÏ°Ô ÀÌÇØÇÏÁö ¸øÇß´ø µ¶ÀÚ¿¡°Ô´Â Å©°Ô µµ¿òÀÌ µÉ °ÍÀÔ´Ï´Ù. µðÀÚÀÎ ÆÐÅÏ°ú °´Ã¼ÁöÇâ¿¡ Èï¹Ì°¡ ÀÖ´Â »ç¶÷, Ãß»ó Ŭ·¡½º³ª ÀÎÅÍÆäÀ̽º¿¡ ´ëÇÑ ÀÌÇØ°¡ ºÎÁ·ÇÏ´Ù°í ´À³¢´Â ÀÚ¹Ù ÇÁ·Î±×·¡¸Ó¿¡°Ô ÃßõÇÕ´Ï´Ù.
? °³¿ä ¹× ³»¿ë
ÀÌ Ã¥Àº µðÀÚÀÎ ÆÐÅÏÀÇ ÀÔ¹®¼ÀÔ´Ï´Ù. GoF°¡ Á¤¸®ÇÑ 23°³ÀÇ µðÀÚÀÎ ÆÐÅÏÀ» Çϳª¾¿ ´Ù·ç¸é¼ °´Ã¼ ÁöÇâÀ» Àß ¸ð¸£´Â Ãʺ¸ÀÚµµ ÀÌÇØÇϱ⠽±µµ·Ï Á¤¸®ÇÏ°í ÀÖ½À´Ï´Ù. ´Ü¼øÇÑ ÀÌ·ÐÀ̳ª ³í¸®À» Á¦½ÃÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó ÆÐÅÏÀ» »ç¿ëÇÑ ±¸Ã¼ÀûÀÎ ÇÁ·Î±×·¥À» Java ¾ð¾î·Î ±â¼úÇÏ¿© ½ÇÁ¦·Î µ¿ÀÛ½ÃÅ°°í ÀÖ½À´Ï´Ù. µðÀÚÀÎ ÆÐÅÏÀº ¸Õ Àå·¡¸¦ À§ÇØ ¹è¿ì´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. ¿ì¸®µéÀÌ ¸ÅÀÏ »ç¿ëÇÏ°í ÀÖ´Â ÇÁ·Î±×·¥À» »õ·Î¿î °üÁ¡¿¡¼ ¹Ù¶óº¼ ¼ö ÀÖ°Ô ÇØÁÖ°í, Àç»ç¿ëÇϱ⠽±°í, ±â´É È®ÀåÀ» ¼Õ½±°Ô ÇÏ´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ¸¸µé±â À§ÇÑ À¯ÀÍÇÑ ±â¹ýÀÔ´Ï´Ù.
* Ư¡ ¶Ç´Â °Á¡
_ GoFÀÇ 23°³ µðÀÚÀÎ ÆÐÅÏ¿¡ ´ëÇؼ Java ¾ð¾î·Î ¸¸µé¾îÁø ±¸Ã¼ÀûÀÎ ¿¹Á¦ ÇÁ·Î±×·¥À» ÅëÇØ ¾Ë±â ½±°Ô ¼³¸íÇÕ´Ï´Ù. ´ëºÎºÐÀÇ ¿¹Á¦ ÇÁ·Î±×·¥Àº 100ÁÙ Á¤µµÀÇ ±æÁö ¾ÊÀº ±¸¼ºÀ¸·Î µÇ¾îÀÖ¾î Ãʺ¸ÀÚµµ ÀÌÇØÇÒ ¼ö ÀÖ½À´Ï´Ù.
_ ¾î·Æ°Ô ´À³¥ ¼ö ÀÖ´Â µðÀÚÀÎ ÆÐÅÏÀÇ ¿ë¾î¸¦ ½¬¿î ¼³¸í°ú ÆÐÅÏÀ» Á÷°üÀûÀ¸·Î Ç¥ÇöÇÑ ÀÏ·¯½ºÆ®¸¦ ÅëÇØ º¸´Ù Ä£¼÷ÇÏ°Ô Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ µðÀÚÀÎ ÆÐÅÏÀÇ Çؼ³»Ó ¾Æ´Ï¶ó Java ¾ð¾î¸¦ ±íÀÌ ¾Ë±â À§ÇÑ ´Ù¾çÇÑ Á¤º¸µµ Á¦½ÃÇÕ´Ï´Ù.
_µðÀÚÀÎ ÆÐÅÏÀº Ä«Å»·Î±×¸¦ Åë°·Î ¾Ï±âÇϱâ À§ÇØ ÀÖ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. ÇÁ·Î±×·¥À» Àоî ÆÐÅÏÀ» ÆľÇÇÑ ÈÄ, ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¶§ ÆÐÅÏÀ» Àû¿ëÇÏ´Â ¿¬½ÀÀ» ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ÀÌ Ã¥¿¡¼´Â ÆÐÅÏÀ» ÀÍÈ÷±â À§ÇÑ ¿¬½À¹®Á¦¿Í ÇØ´äÀ» ½Æ°í ÀÖ½À´Ï´Ù.
* éÅͺ° ¿ä¾à
Chapter 01 Iterator _ ¼ø¼´ë·Î ÁöÁ¤Çؼ ó¸®Çϱâ
º¹¼öÀÇ ¿ä¼Ò°¡ ¸ð¿© ÀÖ´Â Áß¿¡¼ ¿ä¼Ò¸¦ Çϳª¾¿ ²¨³»´Â Iterator ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 02 Adapter _ ¹Ù²ã¼ ÀçÀÌ¿ëÇϱâ
¼·Î ´Ù¸¥ ÀÎÅÍÆäÀ̽º(API)¸¦ °®´Â Ŭ·¡½ºµéÀ» ¿¬°áÇÏ´Â Adapter ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 03 Template Method _ ÇÏÀ§ Ŭ·¡½º¿¡¼ ±¸Ã¼ÀûÀ¸·Î ó¸®Çϱâ
»óÀ§ Ŭ·¡½º¿¡¼ ó¸®ÀÇ »À´ë¸¦ ¼¼¿ì°í, ±¸Ã¼ÀûÀΠ󸮸¦ ÇÏÀ§ Ŭ·¡½º¿¡¼ ½ÇÇàÇÏ´Â Template Method ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 04 Factory Method _ ÇÏÀ§ Ŭ·¡½º¿¡¼ ÀνºÅϽº ¸¸µé±â
»óÀ§ Ŭ·¡½º¿¡¼ ÀνºÅϽº ÀÛ¼º¹ýÀÇ »À´ë¸¦ ¼¼¿ì°í, ±¸Ã¼ÀûÀÎ ÀÛ¼ºÀº ÇÏÀ§ Ŭ·¡½º¿¡¼ ½ÇÇàÇÏ´Â Factory Method ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 05 Singleton _ ÀνºÅϽº¸¦ ÇÑ °³¸¸ ¸¸µé±â
ÀνºÅϽº°¡ Çϳª¸¸ Á¸ÀçÇÏ´Â Singleton ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 06 Prototype _ º¹»çÇؼ ÀνºÅϽº ¸¸µé±â
¸ðÇüÀÌ µÇ´Â ÀνºÅϽº¸¦ º¹»çÇؼ ÀνºÅϽº¸¦ ¸¸µå´Â Prototype ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 07 Builder _ º¹ÀâÇÑ ÀνºÅϽº Á¶¸³Çϱâ
º¹ÀâÇÑ ÀνºÅϽº¸¦ ´Ü°èÀûÀ¸·Î Á¶¸³ÇÏ´Â Builder ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 08 Abstarct Factory _ °ü·Ã ºÎÇ°À» Á¶ÇÕÇؼ Á¦Ç° ¸¸µé±â
°øÀå°ú °°ÀÌ ºÎÇ°À» Á¶ÇÕÇؼ ÀνºÅϽº »ý¼ºÀ» ½ÇÇàÇÏ´Â Abstract Factory ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 09 Bridge _ ±â´É °èÃþ°ú ±¸Çö °èÃþ ºÐ¸®Çϱâ
2Á¾·ùÀÇ È®ÀåÀÌ È¥ÀçÇÏ´Â ÇÁ·Î±×·¥À» ±â´ÉÀÇ °èÃþ°ú ±¸ÇöÀÇ °èÃþÀ¸·Î ºÐ¸®ÇÏ°í, ±× »çÀ̸¦ ¿¬°áÇÏ´Â Bridge ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 10 Strategy _ ¾Ë°í¸®ÁòÀ» ¸ðµÎ ¹Ù²Ù±â
¾Ë°í¸®ÁòÀ» ÀüºÎ ±³Ã¼Çؼ °³·®Çϱ⠽±µµ·Ï ÇÏ´Â Strategy ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 11 Composite _ ±×¸©°ú ³»¿ë¹°À» µ¿ÀϽÃÇϱâ
±×¸©°ú ³»¿ë¹°À» µ¿ÀϽÃÇؼ, Àç±ÍÀûÀÎ ±¸Á¶¸¦ ±¸ÃàÇÏ´Â Composite ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 12 Decorator _ Àå½Ä°ú ³»¿ë¹°À» µ¿ÀϽÃÇϱâ
Àå½Ä°ú ³»¿ë¹°À» µ¿ÀϽÃÇؼ Àå½ÄÀ» ¿©·¯ °ã Áߺ¹µÇ°Ô ÇÏ´Â Decorator ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 13 Visitor _ µ¥ÀÌÅÍ ±¸Á¶¸¦ µ¹¾Æ´Ù´Ï¸é¼ ó¸®Çϱâ
µ¥ÀÌÅÍ ±¸Á¶¸¦ µ¹¾Æ´Ù´Ï¸é¼ µ¿ÀÏÇÑ Á¶ÀÛÀ» ¹Ýº¹Çؼ Àû¿ëÇÏ´Â Visitor ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 14 Chain of Responsibility _ Ã¥ÀÓ ¶°³Ñ±â±â
º¹¼öÀÇ ¿ÀºêÁ§Æ®(°´Ã¼)°¡ ¿¬°áµÇ¾î ÀÖ´Â ³»ºÎÀÇ ¾îµò°¡¿¡¼ ÀÏÀ» ¼öÇàÇÏ´Â Chain of Responsibility ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 15 Facade _ ´Ü¼øÇÑ Ã¢±¸
º¹ÀâÇÏ°Ô ¾ôÈù Ŭ·¡½º¸¦ °³º°ÀûÀ¸·Î Á¦¾îÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ⱸ ¿ªÇÒÀ» Çϴ Ŭ·¡½º¸¦ Çϳª ¹èÄ¡Çؼ ½Ã½ºÅÛ ÀüüÀÇ Á¶ÀÛ¼ºÀ» ÁÁ°Ô ÇÏ´Â Facade ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 16 Mediator _ Áß°³ÀÎÀ» ÅëÇؼ ó¸®Çϱâ
º¹¼öÀÇ Å¬·¡½º°¡ »óÈ£°£¿¡ Á÷Á¢ ÀÇ»ç ¼ÒÅëÀ» ÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, »ó´ã¿ªÀ» Çϴ Ŭ·¡½º¸¦ Çϳª ÁغñÇÏ°í, ±× Ŭ·¡½ºÇÏ°í¸¸ ÀÇ»ç ¼ÒÅëÀ» ÇÏ°Ô Çؼ ÇÁ·Î±×·¥À» ´Ü¼øÇÏ°Ô ¸¸µå´Â Mediator ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 17 Observer _ »óÅÂÀÇ º¯È¸¦ ¾Ë·ÁÁÖ±â
»óÅ°¡ º¯ÈÇϴ Ŭ·¡½º¿Í ±× º¯È¸¦ ÅëÁö¹Þ´Â Ŭ·¡½º¸¦ ºÐ¸®Çؼ »ý°¢ÇÏ´Â Observer ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 18 Memento _ »óŸ¦ ÀúÀåÇϱâ
ÇöÀçÀÇ »óŸ¦ º¸Á¸ÇÏ°í ÇÊ¿äÇÒ ¶§ ½ÇÇàÀ» Ãë¼ÒÇؼ º¹±Í½Ãų ¼ö ÀÖ´Â Memento ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 19 State _ »óŸ¦ Ŭ·¡½º·Î Ç¥ÇöÇϱâ
»óŸ¦ Ŭ·¡½º·Î Ç¥ÇöÇÏ°í »óÅ¿¡ ÀûÇÕÇÑ switch ¹®À» ÁÙÀÌ´Â State ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 20 Flyweight _ µ¿ÀÏÇÑ °ÍÀ» °øÀ¯Çؼ ³¶ºñ ¾ø¾Ö±â
º¹¼öÀÇ Àå¼Ò¿¡¼ µ¿ÀÏÇÑ °ÍÀÌ µîÀåÇÒ ¶§ ±×°ÍµéÀ» °øÀ¯Çؼ ³¶ºñ¸¦ ¾ø¾Ö´Â Flyweight ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 21 Proxy _ ÇÊ¿äÇØÁö¸é ¸¸µé±â
Á¤¸»·Î ¸ñÀûÇÑ °ÍÀÌ ÇÊ¿äÇÏ°Ô µÉ ¶§±îÁö ´ë¸®ÀÎÀ» »ç¿ëÇؼ 󸮸¦ ÁøÇà½ÃÅ°´Â Proxy ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 22 Command _ ¸í·ÉÀ» Ŭ·¡½º·Î Çϱâ
¿ä±¸³ª ¸í·ÉÀ» ÇüÅ·Π¸¸µé¾î¼ Ŭ·¡½º·Î Ç¥ÇöÇÏ´Â Command ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
Chapter 23 Interpreter _ ¹®¹ý±ÔÄ¢À» Ŭ·¡½º·Î Ç¥ÇöÇϱâ
¹®¹ý ±ÔÄ¢À» Ŭ·¡½º·Î Ç¥ÇöÇÏ´Â Interpreter ÆÐÅÏ¿¡ ´ëÇؼ ¹è¿ó´Ï´Ù.
|