设计模式读书笔记:Template Method(模板方法)

原创 2015年07月10日 21:40:31

意图:

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod 使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

结构图:来自 《23种设计模式 - 郗晓勇》


实现:https://github.com/panshiqu/patterns/tree/master/TemplateMethod

AbstractClass

#include <iostream>

namespace NS_TEMPLATEMETHOD {

class AbstractClass {
public:
	AbstractClass() {}
	virtual ~AbstractClass() {}
	void templateMethod(void)
	{
		begin();
		primitiveOperation();
		end();
	}

	void begin(void)	{ std::cout << "This is a popular calculator." << std::endl; }
	void end(void)		{ std::cout << "Bye-bye." << std::endl; }

protected:	// 只被模板方法调用
	virtual void primitiveOperation(void) {}
};

} /* namespace NS_TEMPLATEMETHOD */
ConcreteClass
#include "AbstractClass.h"

namespace NS_TEMPLATEMETHOD {

class ConcreteClass : public AbstractClass
{
public:
	ConcreteClass() {}
	virtual ~ConcreteClass() {}

	// 若不实现将使用父类方法
	virtual void primitiveOperation(void)
	{
		int a, b;
		std::cin >> a;std::cin >> b;
		std::cout << "a+b = " << a+b << std::endl;
	}
};

} /* namespace NS_TEMPLATEMETHOD */
main

#include "TemplateMethod/ConcreteClass.h"
using namespace NS_TEMPLATEMETHOD;
int main(void)
{
	ConcreteClass cc;
	cc.templateMethod();
}
附加:
版权声明:本文为博主原创文章,未经博主允许不得转载。

(C++实现)——模板方法模式(Template Method Pattern)

概述:      我们最近在开发一个支持多种压缩类型文件的解压缩且制作成pdf的一个应用。对我们的架构来说我们需要支持多种压缩文件类型,但却有固定的操作顺序(先解压缩,在读取里面的文件分析、制作...
  • u011676589
  • u011676589
  • 2013年09月18日 14:21
  • 1014

TemplateMethod模板方法模式之应用

一,定义:模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。            二,类图:  ...
  • liujiahan629629
  • liujiahan629629
  • 2014年02月22日 19:37
  • 2341

模板方法模式(Template Method) - 最易懂的设计模式解析

前言今天我来全面总结一下Android开发中最常用的设计模式 - 模板方法模式。 其他设计模式介绍 1分钟全面了解“设计模式” 单例模式(Singleton) - 最易懂的设计模式解析...
  • carson_ho
  • carson_ho
  • 2017年02月07日 15:37
  • 4970

一、 模板方法(Template Method)模式

一、 模板方法(Template Method)模式 准备一个抽象类,将部分逻辑以具体方法以及具体构造子的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这...
  • bug07250432
  • bug07250432
  • 2013年08月23日 17:39
  • 297

Template Method - 模板方法模式

目的 定义一个操作中的算的骨架,将一些步骤的具体实现延迟到子类中,模板方法模式使得子类可以不改变一个算法的结构就可以重新定义该算法的某些特定步骤。 案例 一个含有Appl...
  • Harrising
  • Harrising
  • 2014年07月26日 17:14
  • 471

模板方法模式(Template Method)

模板方法模式,定义一个操作中的算法的骨架,而将步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义算法的某些特定步骤。       就是指:一个抽象类中,有一个主方法,再定义1......
  • zero__007
  • zero__007
  • 2015年06月27日 09:22
  • 255

模板方法模式(Template Method)

1. 模式的定义在应用系统中,需要登录控制的功能。模板方法模式的定义: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。...
  • jiangxishidayuan
  • jiangxishidayuan
  • 2016年07月20日 22:20
  • 294

模板方法模式--Template Method

定义:在一个方法中定义一个算法的骨架, 而将一些步骤延迟到子类中。 模板方法使得子类可以在不改变算法的结构下, 重新定义算法中的某些步骤。 比如我们饮料店同时出售咖啡和茶, 在准备饮料时, 都遵循下...
  • twxyz123
  • twxyz123
  • 2013年07月29日 17:01
  • 270

模板方法模式(Template Method)

模板方法模式基本思想对于某一个具体事务在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法)是相同的。...
  • zhangchen1003
  • zhangchen1003
  • 2015年09月14日 20:32
  • 233

模板方法模式(Template Method)

1. 介绍 1.1 定义 定义一个模板结构,将具体内容延迟到子类去实现。 1.2 主要作用 在不改变模板结构的前提下在子类中重新定义模板中的内容。 模板方法模式是基于”继承“的; 1.3 解决的...
  • rorntuck7
  • rorntuck7
  • 2017年11月02日 12:06
  • 89
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式读书笔记:Template Method(模板方法)
举报原因:
原因补充:

(最多只允许输入30个字)