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

模板模式

时间:2017-05-05 18:31:44      阅读:280      评论:0      收藏:0      [点我收藏+]

标签:pen   init   isp   art   cin   ima   技术分享   virt   images   

作用:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤

其关键是将通用算法(逻辑)封装在抽象基类中,并将不同的算法细节放到子类中实现

代码:

技术分享
#include <iostream>
using namespace std;

class Game
{
public:
    virtual ~Game() {}
public:
    virtual void initialize() = 0;
    virtual void startPlay() = 0;
    virtual void endPlay() = 0;
    virtual void play()
    {
        initialize(); //初始化游戏
        startPlay(); //开始游戏
        endPlay();  // 结束游戏
    }
};

class FootballGame : public Game
{
public:
    virtual void initialize()
    {
        cout << "FootballGame initialize" << endl;
    }
    
    virtual void startPlay()
    {
        cout << "FootballGame begin" << endl;
    }
    
    virtual void endPlay()
    {
        cout << "FootballGame end" << endl;
    }
};

class BasketballGame : public Game
{
public:
    virtual void initialize()
    {
        cout << "BasketballGame initialize" << endl;
    }

    virtual void startPlay()
    {
        cout << "BasketballGame begin" << endl;
    }

    virtual void endPlay()
    {
        cout << "BasketballGame end" << endl;
    }
};

void test()
{
    Game *game = new BasketballGame();
    game->play();
    delete game;
    game = new FootballGame();
    game->play();
    delete game;
    game = NULL;

}

int main()
{
    test();
    cin.get();
    return 0;
}
View Code

效果:

技术分享

 

模板(Templeate)模式(Strategy)和策略模式的区别:

模板模式采用继承的方式实现,将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。

策略模式采用组合的方式,将逻辑(算法)框架放在一个类中。

模板模式

标签:pen   init   isp   art   cin   ima   技术分享   virt   images   

原文地址:http://www.cnblogs.com/hupeng1234/p/6814130.html

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