add Template Method Pattern
parent
d12d406ed1
commit
3237803068
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
|
@ -0,0 +1,41 @@
|
|||
#ifndef __DEMO_H__
|
||||
#define __DEMO_H__
|
||||
|
||||
// 抽象类(基类)
|
||||
class AbstractClass
|
||||
{
|
||||
public:
|
||||
// 模板方法,定义一个算法的框架流程
|
||||
void templateMethod(){
|
||||
// do something
|
||||
method1();
|
||||
method2();
|
||||
method3();
|
||||
}
|
||||
// 基本方法——公共方法
|
||||
void mehtod1(){
|
||||
// do something
|
||||
}
|
||||
// 基本方法2
|
||||
virtual void method2() = 0;
|
||||
// 基本方法3——默认实现
|
||||
void mehtod3(){
|
||||
// do something
|
||||
}
|
||||
};
|
||||
|
||||
// 具体类(派生类)
|
||||
class ConcreteClass :public AbstractClass
|
||||
{
|
||||
public:
|
||||
// 实现基本方法2
|
||||
void method2(){
|
||||
// do something
|
||||
}
|
||||
// 重定义基本方法3,覆盖基类的方法3
|
||||
void method3(){
|
||||
// do something
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,97 @@
|
|||
#ifndef __FINGERPRINTMODULE_H__
|
||||
#define __FINGERPRINTMODULE_H__
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
// 基类
|
||||
class FingerprintModule
|
||||
{
|
||||
public:
|
||||
FingerprintModule(){}
|
||||
void getImage(){
|
||||
printf("采指纹图像\n");
|
||||
}
|
||||
void output(){
|
||||
printf("指纹图像处理完成!\n\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");
|
||||
}
|
||||
};
|
||||
|
||||
#endif //__FINGERPRINTMODULE_H__
|
|
@ -0,0 +1,19 @@
|
|||
#include "FingerprintModule.h"
|
||||
#include <Windows.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
FingerprintModule *fp = new FingerprintModuleA();
|
||||
fp->algorithm();
|
||||
|
||||
fp = new FingerprintModuleB();
|
||||
fp->algorithm();
|
||||
|
||||
fp = new FingerprintModuleC();
|
||||
fp->algorithm();
|
||||
|
||||
|
||||
printf("\n\n");
|
||||
system("pause");
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue