TemplateMethod模式
来源:互联网 发布:bilibili mac客户端 编辑:程序博客网 时间:2024/06/05 04:01
作用:
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
UML结构图:
抽象基类:
1)AbstractClass:抽象基类,定义算法的轮廓
解析:
TemplateMethod 的关键在于在基类中定义了一个算法的轮廓,但是算法每一步具体的实现留给了派生类.但是这样也会造成设计的灵活性不高的缺点,因为轮廓已经定下来了要想改变就比较难了,这也是为什么优先采用聚合而不是继承的原因.
实现:
#ifndef TEMPLATEMETHOD_H_
#define TEMPLATEMETHOD_H_
class AbstractClass
{
public:
AbstractClass(){}
virtual~ AbstractClass(){}
void TemplateMethod();
protected:
virtual void PrimitiveOperation1() = 0;
virtual void PrimitiveOperation2() = 0;
};
class ConcreateClass : public AbstractClass
{
public:
ConcreateClass(){}
virtual~ ConcreateClass(){}
protected:
virtual void PrimitiveOperation1();
virtual void PrimitiveOperation2();
};
#endif
#include "stdafx.h"
#include "TemplateMethod.h"
#include <iostream>
using namespace std;
void AbstractClass::TemplateMethod()
{
PrimitiveOperation1();
PrimitiveOperation2();
}
void ConcreateClass::PrimitiveOperation1()
{
cout<<"ConcreateClass::PrimitiveOperation1"<<endl;
}
void ConcreateClass::PrimitiveOperation2()
{
cout<<"ConcreateClass::PrimitiveOperation2"<<endl;
}
#include "stdafx.h"
#include "TemplateMethod.h"
#include <iostream>
#include <stdlib.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
AbstractClass* lpAbsClass = new ConcreateClass;
lpAbsClass->TemplateMethod();
delete lpAbsClass;
lpAbsClass = NULL;
system("pause");
return 0;
}
- TemplateMethod模式
- TemplateMethod模式
- TemplateMethod模式
- 设计模式--TemplateMethod 模式
- 设计模式之 templatemethod
- TemplateMethod模板方法模式
- TemplateMethod模板方法模式
- 模板方法模式(TemplateMethod)
- TemplateMethod 模板方法模式
- 设计模式--模版方法(TemplateMethod)
- 行为模式之十---TemplateMethod
- TemplateMethod(模板方法模式)
- 模板方法模式(TemplateMethod)
- 模板方法模式(TemplateMethod)
- 模板方法模式(TemplateMethod) 简介
- android设计模式之TemplateMethod
- 模板方法模式(TemplateMethod)
- 15.TemplateMethod-模板方法模式
- 域安全通道和信任关系-- Nltest.exe
- GCC、ARM-LINUX-GCC、ARM-ELF-GCC浅析【原】
- 获得系统当前时间戳
- android里图片下载工具类AsyncImageLoader分析
- Web Application Penetration testing with Google Chrome Browser
- TemplateMethod模式
- android 开发中将十六进制 颜色代码 转换为int类型数值 方法 :
- aptana设置问题
- MS12-032 - Vulnerability in TCP/IP Could Allow Elevation of Privilege
- 相对路径和绝对路径
- jni使用基础(五)之ndk常见错误
- container_of()宏--open()
- powerdesigner 15.1破解
- 修改Ext 3.3 Radio 的inputValue不能0的Bug