有两件事,一件事是煮饺子,另一件事是煮面条。煮饺子的步骤是烧开水,做汤,放饺子,煮面条类似:烧开水,做汤,放面条。他们经历了相同的步骤,但是细节实现是也许是不同的,这个时候,就要用到模板方法模式,把具体的实现细节交给子类:
class Step
{
public:
virtual void water() = 0;
virtual void soup() = 0;
virtual void Push() = 0;
void Make()
{
water();
soup();
Push();
}
};
class dumplings :public Step
{
public:
virtual void water()
{
cout << "水!" << endl;
}
virtual void soup()
{
cout << "放点醋" << endl;
}
virtual void Push()
{
cout << "下饺子" << endl;
}
};
class Noodles :public Step
{
public:
virtual void water()
{
cout << "水!" << endl;
}
virtual void soup()
{
cout << "来点味精" << endl;
}
virtual void Push()
{
cout << "放面" << endl;
}
};
void test()
{
Step* sp1 = new dumplings;
sp1->Make();
Step* sp2 = new Noodles;
sp2->Make();
}
int main()
{
test();
return 0;
}