标签:技术 定义 bool logo 活性 控制 设计模式 main module
模板方法模式是教简单且常用的一种设计模式,是基于类的继承的一种代码复用技术,其结构只存在基类和派生类之间的继承关系。模板方法是一个具体的方法,给出了一个顶层逻辑流程框架。
模板方法模式:定义一个操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定的步骤。子类实现的具体方法叫作基本方法,实现对基本方法高度的框架方法,叫作模板方法。
#ifndef __DEMO_H__
#define __DEMO_H__
// 抽象类(基类)
class AbstractClass {
public:
void templateMethod() {
// do something
method1();
method2();
method3();
}
// 基本方法-公共方法
void method1() {
// do something
}
// 基本方法2
virtual void method2() = 0;
// 基本方法3-默认实现
void method3() {
// do something
}
};
// 具体类(派生类)
class ConceteClass: public AbstractClass {
public:
//
void method2() {
// do something
}
//
void method3() {
// do something
}
};
#endif
某个指纹处理模块可以在两种模式下处理算法,即安全模式和非安全模式。在安全模式下,为了保证数据安全,某个指纹识别流程需要对采得的指纹图像进行加密,在处理图像之前再对加密数据进行解密。而非安全模式这不需要加密解密过程。指纹算法流程如下:采图——加密——解密——算法处理指纹——处理结果。现用模板方法模式模拟上述过程。
// FingerprintModule.h
// 基类
class FingerprintModule
{
public:
FingerprintModule(){}
void getImage(){
printf("采指纹图像\n");
}
void output(){
printf("指纹图像处理完成!\n");
}
virtual bool isSafeMode() = 0;
virtual void processImage() = 0;
// 加解密
virtual void encrypt() = 0;
virtual void decrypt() = 0;
// 模板方法
void algorithm(){
// 1.采图
getImage();
// 2.安全模式下加密和解密
if (isSafeMode()){
// 2.1. 加密
encrypt();
// 2.2. 解密
decrypt();
}
// 3.处理Image
processImage();
// 4.处理结果
output();
}
};
// 派生类
class FingerprintModuleA :public FingerprintModule
{
public:
FingerprintModuleA(){}
void processImage(){
printf("使用 第一代版本算法 处理指纹图像\n");
}
bool isSafeMode(){
printf("安全模式\n");
return true;
}
void encrypt(){
printf("使用RSA密钥加密\n");
}
void decrypt(){
printf("使用RSA密钥解密\n");
}
};
// 派生类
class FingerprintModuleB :public FingerprintModule
{
public:
FingerprintModuleB(){}
void processImage(){
printf("使用 第二代版本算法 处理指纹图像\n");
}
bool isSafeMode(){
printf("非安全模式\n");
return false;
}
void encrypt(){}
void decrypt(){}
};
// 派生类
class FingerprintModuleC :public FingerprintModule
{
public:
FingerprintModuleC(){}
void processImage(){
printf("使用 第一代版本算法 处理指纹图像\n");
}
bool isSafeMode(){
printf("安全模式\n");
return true;
}
void encrypt(){
printf("使用DH密钥加密\n");
}
void decrypt(){
printf("使用DH密钥解密\n");
}
};
// example.cpp
#include "FingerprintModule.h"
int main(int argc, char *argv[])
{
FingerprintModule *fp = new FingerprintModuleA();
fp->algorithm();
printf("\n");
fp = new FingerprintModuleB();
fp->algorithm();
printf("\n");
fp = new FingerprintModuleC();
fp->algorithm();
return 0;
}
标签:技术 定义 bool logo 活性 控制 设计模式 main module
原文地址:https://www.cnblogs.com/parzulpan/p/13531105.html