首页 > 代码库 > 模板模式
模板模式
作用:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤
其关键是将通用算法(逻辑)封装在抽象基类中,并将不同的算法细节放到子类中实现
代码:
#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; }
效果:
模板(Templeate)模式(Strategy)和策略模式的区别:
模板模式采用继承的方式实现,将逻辑(算法)框架放在抽象基类中,并定义好细节的接口,子类中实现细节。
策略模式采用组合的方式,将逻辑(算法)框架放在一个类中。
模板模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。