码迷,mamicode.com
首页 > 其他好文 > 详细

模板方法模式

时间:2015-05-28 00:32:54      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:

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;
}

 

模板方法模式

标签:

原文地址:http://www.cnblogs.com/leijiangtao/p/4534636.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!