模板方法模式

1】什么是模板方法模式?

又叫模板方法模式,在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。

模板方法使得子类可以在不改变算法结构的情冴下,重新定义算法中的某些步骤。

【2】模板方法模式代码示例:

代码示例1:
#include <iostream>
#include <string>
using namespace std;

class TestPaper
{
public:
    void question1()
    {
        cout << "1+1=" << answer1() << endl;
    }
    void question2()
    {
        cout << "1*1=" << answer2() << endl;
    }
    virtual string answer1()
    {
        return "";
    }
    virtual string answer2()
    {
        return "";
    }
    virtual ~TestPaper()
    {
    }
};

class TestPaperA : public TestPaper
{
public:
    string answer1()
    {
        return "2";
    }
    virtual string answer2()
    {
        return "1";
    }
};

class TestPaperB : public TestPaper
{
public:
    string answer1()
    {
        return "3";
    }
    virtual string answer2()
    {
        return "4";
    }
};


int main()
{
    cout << "A的试卷:" << endl;
    TestPaper *s1 = new TestPaperA();
    s1->question1();
    s1->question2();
    delete s1;

    cout << endl;
    cout << "B的试卷:" << endl;
    TestPaper *s2 = new TestPaperB();
    s2->question1();
    s2->question2();

    return 0;
}
代码示例2:
#include<iostream>
#include <vector>
#include <string>
using namespace std;

class AbstractClass
{
public:
    void Show()
    {
        cout << "我是" << GetName() << endl;
    }
protected:
    virtual string GetName() = 0;
};

class Naruto : public AbstractClass
{
protected:
    virtual string GetName()
    {
        return "火影史上最帅的六代目---一鸣惊人naruto";
    }
};

class OnePice : public AbstractClass
{
protected:
    virtual string GetName()
    {
        return "我是无恶不做的大海贼---路飞";
    }
};

//客户端
int main()
{
    Naruto* man = new Naruto();
    man->Show();

    OnePice* man2 = new OnePice();
    man2->Show();

    return 0;
}
原文地址:https://www.cnblogs.com/leijiangtao/p/4534636.html