template method模式
来源:互联网 发布:河南房卡麻将源码 编辑:程序博客网 时间:2024/06/05 10:33
Template Method模式
一. 意图
定义一个操作中的算法骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
二. 适用性
1. 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现
2. 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替代这些不同的代码。
3. 控制子类扩展。模板方法只在特定点调用“hook”操作,这样就只允许在这些点进行扩展。
三. 结构
四. 代码
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<math.h>
usingnamespacestd;
//templatemethodmode
classCAbstractClass
{
public:
//TemplateMethod
voidDrawControl()
{
DrawText();
DrawImage();
DrawDeometry();
}
protected:
//PrimitiveOperation1
virtualvoidDrawText(){}
//PrimitiveOperation2
virtualvoidDrawImage(){}
//PrimitiveOperation3
virtualvoidDrawDeometry(){}
};
classCButton:publicCAbstractClass
{
protected:
virtualvoidDrawText()
{
cout<<"DrawButtonText"<<endl;
}
virtualvoidDrawImage()
{
cout<<"DrawButtonImage"<<endl;
}
virtualvoidDrawDeometry()
{
cout<<"DrawButtonDeometry"<<endl;
}
};
classCList:publicCAbstractClass
{
protected:
virtualvoidDrawText()
{
cout<<"DrawListText"<<endl;
}
virtualvoidDrawImage()
{
cout<<"DrawListImage"<<endl;
}
virtualvoidDrawDeometry()
{
cout<<"DrawListDeometry"<<endl;
}
};
intmain()
{
cout<<"HelloWorld!"<<endl;
CButton*button=newCButton();
CList*list=newCList();
button->DrawControl();
list->DrawControl();
if(button!=NULL)
{
deletebutton;
button=NULL;
}
if(list!=NULL)
{
deletelist;
list=NULL;
}
return0;
}
- Template Method模式
- Template Method模式
- Template Method模式
- Template Method 模板模式
- 设计模式-template method
- TEMPLATE METHOD 模式
- Template Method 模式
- Template Method 模式小结
- Template Method-----设计模式
- template method模式
- Template Method 模式
- Template Method 模式
- Template Method设计模式
- Template Method模式
- Template method模式
- Template Method 模式
- Template Method模式
- Template Method模式
- ffmpeg移植
- 接口回调
- JEECMS源代码节本结构及相关技术总结:
- linux 内核进程间通信semaphore和mutex
- Spark-Sort排序详解
- template method模式
- Tensorflow 代码学习(1)-GRUCell
- QTreeView的模型的写法注意事项
- DES算法破解需要时间的解析
- 从0开始搭建自己的个人网站教程(二)虚拟主机的选购指南
- 接收充电状态和电量的系统广播
- 如何快速转载csdn的博客
- mysql数据库入门(1)--各种数据库介绍
- MFC中用户自定义消息的实现