µðÀÚÀÎ ÆÐÅÏ - Facade Pattern
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

¼Ò°³

¾Æ·¡ UMLÀº starumlÀ» ÀÌ¿ëÇØ¼­ ÀÛ¼ºÇßÀ½.

facade.png

¾î¶² ÀÏÀ» ÇÏ´Â ÇÁ·Î±×·¥À» ¸¸µç´Ù°í °¡Á¤Çغ¸ÀÚ. ÀϹÝÀûÀ¸·Î ÇϳªÀÇ ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ´Â °Íº¸´Ù´Â °¡´ÉÇÑ ºÐÇÒÀ» ÇØ¼­ ¿©·¯°³ÀÇ ¼­ºêÇÔ¼ö¸¦ ¸¸µå´Â ¹æ½ÄÀ» ¼±È£ÇÑ´Ù. ÀÌ·¸°Ô ÇÒ°æ¿ì µð¹ö±ë, À¯Áöº¸¼ö, ÄÚµå°ü¸®°¡ ¼ö¿ùÇØÁö±â ¶§¹®ÀÌ´Ù.

±×·¯³ª ¿©·¯°³ÀÇ ¼­ºêÇÔ¼ö¸¦ µÎ°Ô µÉ °æ¿ì¿¡´Â À̵éÀ» ´Ù·ç±â°¡ Áö³ªÄ¡°Ô º¹ÀâÇØÁö´Â °æ¿ì°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù. socketÇÁ·Î±×·¥À» ¿¹·Î µé¾îº¸ÀÚ¸é, ÇϳªÀÇ endpoint ¼ÒÄÏÀ» ¸¸µé±â À§Çؼ­´Â socket(2)->bind(2)->listen(2) ÀÇ °úÁ¤À» °ÅÃÄ¾ß ÇÑ´Ù. À̶§ À̵é ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °³¹ßÀÚ´Â ´Ü¼øÈ÷ È£Ã⸸ ÇÏ´Â°Ô ¾Æ´Ï¶ó ¿¡·¯Ã³¸®¸¦ À§Çؼ­ °¢°¢ÀÇ ¸®ÅϰªÀ» °Ë»çÇÏ´Â Äڵ嵵 ½Å°æ½á¾ß ÇÑ´Ù.

facade patternÀ» ÀÌ¿ëÇϸé, ÀÌ·¯ÇÑ °úÁ¤À» ¼û±â°í °³¹ßÀÚ¿¡°Ô´Â ´Ü¼øÇÑ Interface¸¸À» Á¦°øÇÒ ¼ö ÀÖ´Ù. Á¦Ç°À» ¸¸µå´Â °øÀåÀ¸·Î Ä¡ÀÚ¸é, ¿©·¯°³ÀÇ ÄÁÅ×ÀÌ³Ê º§Æ®·Î ³ª´µ¾îÁø °øÁ¤À» Çϳª·Î ÅëÀÏ ½ÃŰ´Â °Å¶ó°í³ª ÇÒ ¼ö ÀÖ°Ú´Ù.

°øÁ¤ 1 : 3¹øÀÇ ÀÔ·Â, Áï 3°³ÀÇ Interface°¡ ÇÊ¿äÇÏ´Ù.

belt1.png

°øÁ¤ 2 : 1¹øÀÇ ÀÔ·Â, Áï 1°³ÀÇ Interface¸¸À» °¡Áø´Ù.

belt2.png

C++

¾Æ·¡´Â ÄÄÇ»Å͸¦ °¡µ¿ÇÏ´Â °£´ÜÇÑ ½Ã¹Ä·¹ÀÌ¼Ç ÇÁ·Î±×·¥ÀÌ´Ù. ÄÄÇ»Å͸¦ °¡µ¿Çϱâ À§Çؼ­´Â CPU, Memory, HardDisk¸¦ ¼ø¼­¿¡ ¸Â°Ô Á¦¾î¸¦ ÇØ¾ß ÇÑ´Ù. facade ÆÐÅÏÀ» ÀÌ¿ëÇϸé, ÀÌ·¯ÇÑ °úÁ¤À» ¼û±æ ¼ö ÀÖ´Ù. ÇÁ·Î±×·¡¸Ó´Â ´Ù¸¥ °Í¿¡ ½Å°æ¾µ ÇÊ¿ä¾øÀÌ startComputer¸Þ¼­µå¸¸ È£ÃâÇÏ¸é µÈ´Ù.
#include <iostream> 
using namespace std; 
 
#define BOOT_ADDRESS 0x11 
#define BOOT_SECTOR  0x18 
#define SECTOR_SIZE  0x80 
 
class CPU 
{ 
  public: 
    void freeze() {cout <<"Freeze" << endl;} 
    void jump(unsigned int pos){ cout << "Position " << pos << endl; } 
    void execute(){cout << "EXECUTE" << endl;} 
}; 
 
class Memory 
{ 
  public: 
    void load(unsigned int pos, char *data) 
    { 
      cout << "Memory Load" << pos << endl; 
    } 
}; 
 
class HardDrive 
{ 
  public: 
    char * read(long lba, int size) 
    { 
    } 
}; 
 
// Facade 
class Computer 
{ 
  public: 
    void startComputer() 
    { 
      CPU cpu; 
      Memory memory; 
      HardDrive harddrive; 
 
      cpu.freeze(); 
      memory.load(BOOT_ADDRESS, harddrive.read(BOOT_SECTOR, SECTOR_SIZE)); 
      cpu.jump(BOOT_ADDRESS); 
      cpu.execute(); 
    } 
}; 
 
int main() 
{ 
  Computer facade; 
  facade.startComputer(); 
} 
 
 

ÇÒÀÏ

  • C·Îµµ ±¸ÇöÇØº¸±â.
category_C++
category__2
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.