首页 > 其他 > 详细

模板方法模式

时间:2015-05-28 00:29:43      阅读:289      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!