ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù. Template method pattern
behavioral patternÀ̶ó°í ºÎ¸£±âµµ ÇÑ´Ù. C++ÀÇ template¿Í´Â ¾Æ¹«·± »ó°üÀÌ ¾ø´Ù.
»óÀ§ Ŭ·¡½º, Áï base Ŭ·¡½º´Â ±âº»ÀûÀÎ ¸Þ¼µå¸¸ Á¦°øÇϰí base Ŭ·¡½º·Î ºÎÅÍ ÆÄ»ýµÈ Ŭ·¡½º¿¡¼ ÇØ´ç ¸Þ¼µå¸¦ Á¦Á¤ÀÇ ÇØ¼ »ç¿ëÇÑ´Ù. ¸¸¾à ÇØ´ç ¸Þ¼µå¸¦ ÀçÁ¤ÀÇ ÇÏÁö ¾Ê´Â´Ù¸é, ±âº» ¸Þ¼µå¸¦ ±×´ë·Î »ç¿ëÇÑ´Ù.
Template method patternÀ» »ç¿ëÇÑ °¡Àå ´ëÇ¥ÀûÀÎ ¿¹´Â CÀÇ qsort(3) ÇÔ¼öÀÏ °ÍÀÌ´Ù. qsort´Â ³»ºÎ¿¡ quick sort¾Ë°í¸®Áò¸¸ °¡Áö°í ÀÖÀ¸¸ç, Á¤·ÄÇϰíÀÚ ÇÏ´Â ¿ø¼Ò¸¦ ºñ±³ÇÒ ¾Ë°í¸®ÁòÀ» ÇÔ¼öÆ÷ÀÎÅ͸¦ ÀÌ¿ëÇØ¼ Á¤ÀÇÇÒ ¼ö ÀÖµµ·Ï ÇØ³õ¾Ò´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á, ÇÁ·Î±×·¡¸Ó´Â ´Ù¾çÇÑ Å¸ÀÔÀÇ ¿ø¼Ò¿¡ ´ëÀÀµÇ´Â Á¤·Ä ÇÁ·Î±×·¥À» ¸¸µé ¼ö ÀÖ´Ù.
C++, Java°°Àº °´Ã¼ÁöÇâ ¾ð¾î¿¡¼´Â ´ÙÇü¼ºÀ» ÀÌ¿ëÇØ¼ Á»´õ Á÷°üÀûÀ¸·Î ±¸ÇöÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.
ÀÌ ÆÐÅÏÀº ¾Ë°í¸®ÁòÀ» ´Ù¾çÇÏ°Ô Á¤ÀÇ ÇÒ¼ö ÀÖÀ¸¸ç, ¾Ë°í¸®ÁòÀ» ¾î¶»°Ô Á¤ÀÇÇÏ´À³Ä¿¡ µû¶ó¼ ´Ù¾çÇÑ °á°ú¹°À» ¸¸µé¾î³¾ ¼ö ÀÖ´Ù. ÀÌ °á°ú¹°Àº ÀÀ¿ë ¾ÖÇø®ÄÉÀ̼ǿ¡¼ view°¡ µÉ ¼ö ÀÖÀ» °ÍÀε¥, ¿©±â¿¡¼ template method patternÀº MVCÆÐÅÏÀÇ ¼ºê¼ÂÀÌ µÊÀ» ¾Ë ¼ö ÀÖ´Ù. ¿¹Á¦C++
sortÇÁ·Î±×·¥À» ¸¸µå´Â°Ô °¡Àå ÁÁÀ» °Í °°±â´ÂÇÏ´Ù. base Ŭ·¡½º´Â sort¾Ë°í¸®ÁòÀ» °¡Áö°í, compare¸Þ¼µå¿¡¼ ºñ±³¾Ë°í¸®ÁòÀ» °¡Áöµµ·Ï ÇÏ´Â ½ÄÀÌ´Ù. ±×·¯³ª ¿¹Á¦·Î »ç¿ëÇϱ⿡´Â ±ÍÂúÀº °¨ÀÌ ÀÖÀ¸´Ï ¾ÆÁÖ ½ÉÇÃÇÑ ¿¹Á¦¸¦ ÁغñÇß´Ù. ³ªÁß¿¡ Á»´õ ±×·²µíÇÑ ¿¹Á¦¸¦ ¸¸µé¾îºÁ¾ßÁö ½Í´Ù.
#include <iostream>
using namespace std;
class Base
{
void a()
{
cout << "a ";
}
void c()
{
cout << "c ";
}
void e()
{
cout << "e ";
}
virtual void ph1() = 0;
virtual void ph2() = 0;
public:
void execute()
{
a();
ph1();
c();
ph2();
e();
}
};
class One: public Base
{
void ph1()
{
cout << "b ";
}
void ph2()
{
cout << "d ";
}
};
class Two: public Base
{
void ph1()
{
cout << "2 ";
}
void ph2()
{
cout << "4 ";
}
};
int main()
{
Base *array[] =
{
&One(), &Two()
};
for (int i = 0; i < 2; i++)
{
array[i]->execute();
cout << '\n';
}
}
°á°ú# ./sort a b c d e a 2 c 4 e php
¿©±â¿¡¼´Â MVCÀÇ ¼ºê¼ÂÀ¸·Î½áÀÇ template method ÆÐÅÏÀÇ »ç¿ë¿¹¸¦ µé¾ú´Ù. ÀÌ ÆÐÅÏÀº °³ÀÎ ÇÁ·ÎÁ§Æ®ÀÎ dmf ÇÁ·¹ÀÓ¿öÅ©¿¡ »ç¿ëµÇ¾ú´Ù.
// base class
// interface¸¦ ÀÌ¿ëÇØ¼ ¼ø¼ö°¡»óÇÔ¼ö·Î ¸¸µé ¼öµµ ÀÖÀ» °ÍÀÌ´Ù.
class Module
{
var $options;
var $template
function model()
{
echo "This is model method";
}
function view()
{
echo "This is view";
}
}
class dbtest extends Module
{
var $className = 'dbtest';
var $viewData;
function model()
{
$DBI = $this->formatter[db];
if(isset($this->options[searchstr]))
{
$str = $this->options[searchstr];
$DBI->Query("select id, subject, ip from joinc_Trackbacks where subject like '%$str%'order by id limit 10");
}
else
{
$result = $DBI->Query("select id, subject, ip from joinc_Trackbacks order by id limit 10");
if (!$result)
echo mysql_error();
}
$rowlist = array();
while($row = $DBI->Fetch())
{
array_push($rowlist, $row);
}
$this->viewData[trackback] = $rowlist;
}
function view()
{
// viewData¸¦ Ãâ·ÂÇϱâ À§ÇÑ Äڵ尡 µé¾î°£´Ù.
}
}
|
|
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|