ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. Adapter pattern
ÀÎÅÍÆäÀ̽º°¡ ÀÏÄ¡ÇÏÁö ¾Ê´Â Ŭ·¡½º¸¦ ÇÔ²² ¿î¿ëÇØ¾ß ÇÏ´Â °æ¿ì¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù. ºñ±³Àû °£´ÜÇÑ ÆÐÅÏÀ¸·Î °¢°¢ÀÇ class¸¦ ¼öÁ¤ÇÏÁö ¾Ê°í ÇÔ²² ¿î¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØÁØ´Ù. ÀÌ ÆÐÅÏ¿¡´Â ´ÙÀ½ÀÇ °´Ã¼µéÀÌ Á¸ÀçÇÑ´Ù.
Object Pattern ¹öÀü![]()
Client´Â AdapteeÀÇ methodB¸¦ »ç¿ëÇÏ°í ½Í´Ù. ±×·±µ¥, Client¿Í Adapter¸ðµÎ ±¸ÇöÀÌ ³¡³ »óÅ - ȤÀº ¶óÀ̺귯¸®¸¸ °¡Áö°í Àְųª -·Î Ŭ·¡½º¸¦ ¼öÁ¤ÇÒ ¼ö ¾ø´Ù. ´ë½Å Áß°£¿¡ Client¿Í ȣȯµÇ´Â ÀÎÅÍÆäÀ̽º¸¦ °¡Áø Adapter¸¦ µÐ´Ù. ÀÌ È£È¯µÇ´Â ¸Þ¼µå¸¦ client°¡ È£ÃâÇϸé, Adapter´Â AdapteeÀÇ methodB¸¦ È£ÃâÇÏ°Ô µÈ´Ù. ÀÌ·¸°Ô ÇØ¼ ±âÁ¸ Ŭ·¡½ºÀÇ ¼öÁ¤¾øÀÌ Client¿¡¼ AdapteeÀÇ ±â´ÉÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ°Ô µÈ´Ù.
ÁýÇÕ°ü°è¸¦ ÀÌ¿ëÇÑ »õ·Î¿î °´Ã¼¸¦ µÎ´Â ¹æ½ÄÀ¸·Î, Object Pattern À̶ó°í ÇÑ´Ù. Client Adapter Adaptee +-----+ +------+ +-----+ | |---> > |---) ) | | |---> > |---) ) | +-----+ +------+ +-----+ Adapter´Â Client¿Í Adaptee¿¡ ȣȯµÇ´Â Interface¸¦ ¸ðµÎ °¡Áö°í -ÁýÇÕ- ÀÖ´Ù.
µðÀÚÀÎ ÆÐÅÏÀ» »ý¼ºÇÏ´Â ¹æ¹ýÁß °´Ã¼ ÇÕ¼ºÀ» ÀÌ¿ëÇÑ ¿¹¶ó°í º¸¸é µÉ°Í °°´Ù. ´Ù¸¥ ÇѰ¡Áö ¹æ¹ýÀº Ŭ·¡½º ÇÕ¼ºÀε¥, ¾Æ·¡¿¡ ¼³¸íÇÑ´Ù. Class Pattern ¹öÀü
C++ÀÇ ´ÙÁß»ó¼ÓÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ýÀÌ´Ù. ¿©±â¿¡¼ Adapter´Â Adaptee¸¦ »ó¼Ó¹Þ¾Æ¼ ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ![]() ¿¹Á¦
¿Í¿ì¸¦ ÁÁ¾ÆÇÏ´Ï, ¿Í¿ìÀÇ Á÷¾÷±ºÀ¸·Î ¿¹Á¦¸¦ ¸¸µé¾î ºÃ´Ù. ¿Í¿ì¿¡¼ °¡Àå Áß¿äÇÑ Á÷¾÷À̶ó°í ÇÏ¸é ¿ª½Ã ÆÄƼÀÇ ¸®´õÀÌÀÚ ¸ö»§ÀÎ Fighter¿Í Fighter¿Í ÆÄƼÀÇ ÇǸ¦ Ã¥ÀÓÁ® ÁÖ´Â healerÀÏ °ÍÀÌ´Ù. - Âü°í·Î ³ª´Â õ¹Î ³É²Û. ±×·¡µµ ºÎ»ç·É°üÀ̶ó´Â. ¸»Ç»¸®¿Â¼¹ö µå¶ó°í³Ê¸¦ ã¾ÆÁÖ¼¼¿ä.-
Fighterµµ Çǰ¡ ¾øÀ»¶§¿¡´Â ºØ´ëÁú·Î ÇǸ¦ ä¿ï ¼ö ÀÖ±â´Â Çѵ¥, Èú·¯ÀÇ healing ¸¶¹ý¿¡ ºñÇØ¼´Â ±× È¿À²¼ºÀÌ ´ë´ÜÈ÷ ¶³¾îÁú ¼ö ¹Û¿¡ ¾ø´Ù.
±×·¡¼ Fighter¿¡°Ô Èú·¯ÀÇ 1 level Èú¸µ ´É·ÂÀ» ¼±»çÇϱâ·Î Çß´Ù. ¿Í¿ìÀúÀÇ ÀÔÀå¿¡¼´Â Fighter¿¡°Ô ¸¶¹ýÀÌ »ý¼ÒÇÒ ¼ö ÀÖ°ÚÁö¸¸, D&D·ê °°Àº °æ¿ì¿¡¸¸ ºÁµµ Fighter Class°¡ ¸¶¹ýÀ» ¹è¿ì´Â °ÍÀ» ±ÝÁöÇϰí ÀÖÁö´Â ¾Ê´Ù. Á» È¿À²ÀÌ ¶³¾îÁ®¼ ±×·¸Áö..
ÀÌÁ¦ Fighter¿¡°Ô Èú·¯ÀÇ cure ´É·ÂÀ» Áà¾ß Çϴµ¥.. À½ ÀÌ°Ô ÀÎÅÍÆäÀ̽º°¡ ´Ù¸¥°Ô Á» ¹®Á¦´Ù. Adapter PatternÀ» ÀÌ¿ëÇϸé, ÀÌ ¹®Á¦¸¦ Ç® ¼ö ÀÖÀ» °Í °°´Ù. Object pattern ¹öÀü
ÀÌ°Ç Object pattern ¹öÀüÀÇ ÄÚµå´Ù. #include <iostream>
using namespace std;
/*
ÀÀ±Þ»óÀÚ Å¬·¡½º
¿©±â¿¡´Â ºØ´ë¿Í ºØ´ë°¨±â¸¦ À§ÇÑ OperationÀÌ Æ÷ÇԵǾî ÀÖÀ» °ÍÀÌ´Ù.
*/
class AidKit
{
};
class Fighter
{
private:
public:
// ¿ø·¡ Àü»ç´Â ºØ´ë¸¦ ÀÌ¿ëÇØ¼ Ä¡·áÇÒ ¼ö ¹Û¿¡ ¾ø¾úÁö¸¸..
virtual void cure(AidKit *) = 0;
virtual void attack() = 0;
virtual void defense() = 0;
void myClass(){cout << "I'm fighter" << endl;}
};
class Healer
{
public:
void healing(int Level) {
cout << "Level : " << Level << "Healing ½ÃÀü" << endl;
}
void magic_attack();
void magic_defense();
};
class AdvFighter : public Fighter
{
private :
Healer *heal;
int healLevel;
public:
AdvFighter(Healer *h) {
heal = h;
healLevel = 1;
}
void attack(){cout << "Attack !!!" << endl;};
void defense(){cout << "Defense !!!" << endl;};
void setHealLevel(int lev) {
}
// ·¹º§¾÷ µÇ¸é¼, Èú·¯ÀÇ healing ¸¶¹ýÀ» ¾µ ¼ö ÀÖ°Ô µÇ¾ú´Ù.
// 1 level ÀÌÁö¸¸ À̰͸¸ ÇØµµ °¨»ç °¨»ç.
// ±âÁ¸ÀÇ ºØ´ëÁú ½ºÅ³Àº ±×´ë·Î µÐä, »õ·Î¿î ½ºÅ³À» Ãß°¡Çصµ µÈ´Ù.
void cure(AidKit *)
{
heal->healing(healLevel);
}
void healing()
{
heal->healing(healLevel);
}
int getHealLevel()
{
return healLevel;
}
};
int main(int argc, char **argv)
{
Healer *myHealer;
AidKit *myKit;
AdvFighter *healFighter = new AdvFighter(myHealer);
healFighter->myClass();
healFighter->cure(myKit);
healFighter->healing();
healFighter->attack();
}
Class Pattern ¹öÀü
C++ÀÇ ´ÙÁß»ó¼ÓÀ» ÀÌ¿ëÇØ¼ ±¸ÇöÇß´Ù. // ...Àü·«
class Fighter
{
private:
public:
virtual void cure(AidKit *) = 0;
virtual void attack() = 0;
virtual void defense() = 0;
void myClass(){cout << "I'm Fighter" << endl;}
};
class Healer
{
public:
void healing(int Level) {
cout << "Level : " << Level << "Healing ½ÃÀü" << endl;
}
void magic_attack();
void magic_defense();
};
class AdvFighter : public Fighter, private Healer
{
private :
int healLevel;
public:
AdvFighter() {
healLevel = 1;
}
void cure(AidKit *) {
Healer::healing(healLevel);
}
void attack(){};
void defense(){};
};
int main()
{
AdvFighter *myFighter = new AdvFighter;
AidKit *myKit;
myFighter->myClass();
myFighter->cure(myKit);
return 0;
}
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|