有两件事,一件事是煮饺子,另一件事是煮面条。煮饺子的步骤是烧开水,做汤,放饺子,煮面条类似:烧开水,做汤,放面条。他们经历了相同的步骤,但是细节实现是也许是不同的,这个时候,就要用到模板方法模式,把具体的实现细节交给子类:
- 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;
- }