1. 模板方法是一种代码复用的基本技术,定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。在使用模板方法时,很重要的一点是模板方法应当指明哪些操作是可以被重写的,以及哪些是必须被重写的。
2. 以网购为例,网购的流程包括四步,分别是预定商品、付款、发货以及收获,不同的电商平台都是这四个流程。
#include <iostream>
using namespace std;
class ShopOnline {
public:
virtual void order() = 0;
virtual void pay() = 0;
virtual void sendPkt() = 0;
virtual void recvPkt() = 0;
void shopping()
{
order();
pay();
sendPkt();
recvPkt();
}
};
class TBShop : public ShopOnline {
public:
void order()
{
cout << "TB order" << endl;
}
void pay()
{
cout << "TB pay" << endl;
}
void sendPkt()
{
cout << "TB sendPkt" << endl;
}
void recvPkt()
{
cout << "TB recvPkt" << endl;
}
};
class JDShop : public ShopOnline {
public:
void order()
{
cout << "JD order" << endl;
}
void pay()
{
cout << "JD pay" << endl;
}
void sendPkt()
{
cout << "JD sendPkt" << endl;
}
void recvPkt()
{
cout << "JD recvPkt" << endl;
}
};
int main()
{
cout << "Template Method:" << endl;
ShopOnline *tShop = new TBShop();
tShop->shopping();
ShopOnline *jShop = new JDShop();
jShop->shopping();
return 0;
}
3. 结果
END。