ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. Factory Method PatternÀϹÝÀûÀÎ »óȲ
factory´Â °øÀåÀ» ÀǹÌÇÑ´Ù. °øÀåÆÐÅÏ? ÀÌ ÆÐÅÏÀº °øÀåÀÇ ÀÛµ¿¹æ½ÄÀ» »ý°¢Çغ¸¸é ¾î·ÆÀÝ°Ô ÀÌÇØÇÒ ¼ö ÀÖ´Â ÆÐÅÏÀÌ´Ù. ¼ÒÇÁÆ®¿þ¾î °³¹ßÀÌ ¾Æ´Ñ ¿µ¿ª¿¡µµ ³Î¸® ¾²ÀÌ´Â ÆÐÅÏÀÌ´Ù.
°øÀåÀº ÇÊ¿äÇÑ ÀÚ¿ø°ú ¼³ºñ¸¦ °®Ãß°í ÀÖÀ¸¸ç, À̵é ÀÚ¿ø°ú ¼³ºñ¸¦ ÀÌ¿ëÇØ¼ ƯÁ¤ÇÑ °´Ã¼¸¦ »ý»êÇÒ ¼ö ÀÖ´Â ½Ã¼³ÀÌ´Ù. ¸¸¾à¿¡ ¿ÀÅä¹ÙÀ̸¦ ¸¸µå´Â °øÀåÀ̶ó°í Çϸé, ÀÌ °øÀåÀº ´ÜÀÏ ºê·£µåÀÇ ¿ÀÅä¹ÙÀ̸¸ »ý»êÇØ³»Áö´Â ¾ÊÀ» °ÍÀÌ´Ù. ±×·¸°Ô °øÀåÀ» ¼³°èÇÒ¸®µµ ¾øÀ» °ÍÀÌ´Ù. ºÐ¸íÈ÷ ´Ù¾çÇÑ ´Ù¾çÇÑ ¿ëµµÀÇ ¿ÀÅä¹ÙÀ̸¦ »ý»êÇØ³¾ ¼ö ÀÖ°Ô²û ¼³°èÇÒ °ÍÀÌ´Ù
ÀÌ·¸°Ô ÇØ¼ ¾òÀ» ¼ö ÀÖ´Â ÀÕÁ¡Àº ¿©·¯°³ÀÇ ºñ½ÁÇÑ °øÁ¤À» °¡Áö´Â ½Ã¼³À» ¿©·¯°³ °¡Áö°í ÀÖÀ» Çʿ䰡 ¾ø´Ù´Â Á¡ÀÌ µÉ °ÍÀÌ´Ù. ½ºÀ§Ä¡¸¸À» ÀÌ¿ëÇØ¼ ºñ±³Àû °£´ÜÇÏ°Ô ´Ù¾çÇÑ Á¦Ç°À» »ý»êÇÒ ¼ö ÀÖ´Ù. À̸¦ ¼ÒÇÁÆ®¿þ¾î¿¡ ±×´ë·Î ÀÀ¿ëÇÑ°Ô factory method patternÀÌ´Ù. ![]() »óȲ±Ø
Ȱ¿ë
»ç¿ë¿¹
Image Reader¸¦ À§ÇÑ Å¬·¡½º¸¦ ¸¸µå´Â °æ¿ì¸¦ »ý°¢Çغ¸ÀÚ. ÀÌ Å¬·¡½º´Â ¿©·¯°¡Áö À̹ÌÁö¸¦ ÀÐÀ» ¼ö ÀÖ¾î¾ß ÇÒ °ÍÀÌ´Ù. ±×·¸´Ù¸é, À̹ÌÁö ŸÀÔÀ» ÀÎÀÚ·Î ¹Þ¾ÆµéÀ̰í ÇØ´ç À̹ÌÁö¸¦ ó¸®ÇÒ ¼ö ÀÖ´Â °´Ã¼¸¦ »ý¼ºÇؼ ¸®ÅÏÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
#include <iostream>
#include <stdio.h>
#define GIF 1
#define JPG 2
#define PNG 3
using namespace std;
class ImageReader
{
public:
virtual void decode() = 0;
};
class GIFReader: public ImageReader
{
public :
void decode() {cout << "GifReader RUN" << endl;}
};
class JPGReader: public ImageReader
{
public :
void decode() {cout << "JPGReader RUN" << endl;}
};
class PNGReader: public ImageReader
{
public :
void decode() {cout << "PNGReader RUN" << endl;}
};
class ImageReaderFactory
{
private:
int ImageType;
public:
void setImageType(int type)
{
ImageType = type;
}
ImageReader* getImageReader(int type)
{
setImageType(type);
switch(type)
{
case GIF:
return new GIFReader();
case JPG:
return new JPGReader();
case PNG:
return new JPGReader();
default:
break;
}
}
};
// Å×½ºÆ®¿ë Main ÄÚµå
int main(int argc, char **argv)
{
ImageReaderFactory * myReaderFactory;
ImageReader *myReader;
myReaderFactory = new ImageReaderFactory;
myReader = myReaderFactory->getImageReader(PNG);
myReader->decode();
}
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|