设计模式(1)templateMethod_cplus

设计模式(1)templateMethod_cplus

1.定义库模板类

#pragma once
#include "stdafx.h"
/*
templateMethod  模板方法
*/
class templateMethodParent
{
public:
	//程序函数主流程,模板方法的核心,调用子类变化方法,属于晚调用
	void run(){
		this->step1();
		this->step2();
		this->step3();
		this->step4();
		this->step5();
	};
	templateMethodParent(){};//构造函数
	virtual ~templateMethodParent(){}; //虚析构函数
protected:
	virtual void step3(){}; //抽象函数 变化点
	virtual void step5(){}; //抽象函数 变化点
private:
	wstring className = TEXT("templateMethodParent");
	void step1(){
		wprintf(TEXT("%s_步骤1执行中...\r\n"), className);
	};  //稳定点
	void step2(){
		wprintf(TEXT("%s_步骤2执行中...\r\n"), className);
	};  //稳定点
	void step4(){
		wprintf(TEXT("%s_步骤4执行中...\r\n"), className);
	};  //稳定点
};

 

2.定义应用模板类

#include "templateMethodParent.h"

class templateMethodItem : public templateMethodParent{
public:
	templateMethodItem(){};
	~templateMethodItem(){};
private:
	wstring className = TEXT("templateMethodItem");
protected:
	void step3(){
		wprintf(TEXT("%s_执行步骤3..."),className);
	};
	void step5(){
		wprintf(TEXT("%s_执行步骤5..."),className);
	};
};

3.创建类实例执行函数主题流程

// templateMethod.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "templateMethodItem.h"

int _tmain(int argc, _TCHAR* argv[])
{
	templateMethodParent* templateP = new templateMethodItem();//创建多态堆对象
	templateP->run();//执行程序主流程
	delete templateP; //删除堆对象,释放堆内存
	getchar();
	return 0;
}

 

你可能感兴趣的:(C++,设计模式,c++,类)