首页 > 编程语言 >C++ 设计模式--模板方法Template Method

C++ 设计模式--模板方法Template Method

时间:2023-01-29 15:37:54浏览次数:48  
标签:... -- void C++ Application step4 Template 设计模式 Method

1.定义

定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(override 重写)该算法的某些特定步骤。

2.理解

本质就是虚函数机制的运用。

3.代码

#include<iostream>
using namespace std;
class Library
{
public:
	void run()
	{
		step1();
		step2();
        steo3();
		step4();
		step5();
	}
protected:
	void step1()
	{
		//...
	}
	void step3()
	{
		//...
	}
	void step5()
	{
		//...
	}
	virtual void step2() = 0;
	virtual void step4() = 0;
};

class Application:public Library
{
public:
	void step2() override
	{
		//...
	}
	void step4() override
	{
		//...
	}
};

int main(int argc, char* argv[])
{	
	Application app;
	app.run();

	/*或者如下
	Library* p = new Application;
	p->run();
	*/
	
	return 0;
}

 

标签:...,--,void,C++,Application,step4,Template,设计模式,Method
From: https://www.cnblogs.com/ysnana/p/17072773.html

相关文章

  • Error: error:0308010C:digital envelope routines::unsupported(vue2项目报错)
    问题描述在终端输入 npmrundev 命令,项目运行报错Error:error:0308010C:digitalenveloperoutines::unsupported问题原因node 版本过高,可以在命令行 输入......
  • [Oracle19C 数据库管理] 用户与权限管理
    用户管理用户具有以下属性:用户名:不能超过30位。不能包含特殊字符。必须用字符开头。用户名不区分大小写。认证方式:最常见的是密码认证。默认永久表空间:控制用户可......
  • Linux 命令 | nslookup
    nslookup(NameServerLookup)是一种网络管理命令。用于从DNS服务器查询域名、IP或其他DNS记录信息。命令格式nslookup[-OPTION][SERVER|IP][DNSSERVER]OP......
  • 用lazarus的InputQuery替代密码修改窗口
    lazarus的InputQuery按以下方法就可以替代密码修改窗口,InputQuery跨平台的,简单方便。unitunit13;{$modeobjfpc}{$H+}interfaceusesClasses,SysUtils,Forms,......
  • IdentityServer4源码解析_2_元数据接口
    1|0目录IdentityServer4源码解析_1_项目结构IdentityServer4源码解析_2_元数据接口IdentityServer4源码解析_3_认证接口IdentityServer4源码解析_4_令牌发放接口Id......
  • k8s client-go 01介绍
    关于client-goclient-go是一个golang的client,我们可以通过client-go与K8SapiServer进行交互,对k8s集群中资源对象,包括内置资源(例如:Pod、Deployment、Service等)和CRD进......
  • 爬虫对于protobuf协议的处理
    第一步处理1.首先抓包2.复制请求值的hex3.打开010编辑器4.创建hexfile5.ctrl+shift+c复制内容,并保持6.protoc--decode_raw<存的文件路径1:12:165000108201......
  • Python字典对象的创建(9种方式)
    第一种方式:使用{}firstDict={"name":"wangyuanwai","age":25} 说明:{}为创建一个空的字典对象第二种方式:使用fromkeys()方法second_dict=dict.f......
  • Go学习笔记
    1.当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个......
  • vscode快捷键编辑
    进行搜索命令。1、有提示的时候向下选择的命令:selectNextSuggestion2、有提示的时候向上选择的命令:selectPrevSuggestion3、光标上移,下移,左移,有移:cursorUp,cursorDown,cur......