博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
模板模式
阅读量:4469 次
发布时间:2019-06-08

本文共 1417 字,大约阅读时间需要 4 分钟。

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

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

代码:

#include 
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)和策略模式的区别:

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

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

转载于:https://www.cnblogs.com/hupeng1234/p/6814130.html

你可能感兴趣的文章
计算机底层是如何访问显卡的?
查看>>
Maven Assembly plugin and Spring Namespace handlers
查看>>
VS2012旗舰版接选择调试 出现了这样一个错误
查看>>
C++如何保留2位小数输出
查看>>
BZOJ 3343 教主的魔法 分块
查看>>
hadoop-2.6.0 Unhealthy Nodes 问题
查看>>
Linux 驱动之内核定时器
查看>>
作业5散列函数安全性的知识扩展+2016012102+曹滢
查看>>
POJ3259 Wormholes(最短路)
查看>>
关于set
查看>>
《探索性软件测试》
查看>>
C/C++通过WMI和系统API函数获取获取系统硬件配置信息
查看>>
Javascript Patterns--读书笔记4 (Functions)
查看>>
【运维】使用Serv-U搭建FTP服务器
查看>>
【1414软工助教】在博客中插入代码
查看>>
NuGet包断线续传下载
查看>>
【机器学习】梯度下降法的相关介绍
查看>>
struts.xml配置详解
查看>>
unity3d脚本语言中的引用类型
查看>>
unity 判断物体是否在视角内(巧妙!)
查看>>