设计模式读书笔记: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();
}
附加:

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

重构笔记3-form template method

以下内容为转载[ 转自:http://www.cnblogs.com/matchcolor/archive/2010/07/26/1785602.html 你有一些子类,其中相应的某些函数以相同...

Java设计模式学习笔记之 —— 模板方法(Template Method)

跟随郭霖大神的脚步学习设计模式,真是通俗易懂~赞: 原文出处:http://blog.csdn.net/guolin_blog/article/details/8744002模板方法: 定义一个操...

设计模式C++学习笔记之九(Template Method模板方法模式)

博文很精彩,为方便个人学习特转载,地址:http://www.cnblogs.com/wanggary/archive/2011/04/15/2016619.html 模板模式也是相当简单的一种...

设计模式C++学习笔记之九(Template Method模板方法模式)

设计模式C++学习笔记之九(Template Method模板方法模式) 模板模式也是相当简单的一种模式,而且是比较常用的。模板模式是定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Templ...

设计模式学习笔记---模板方法模式template method pattern(Java版)

一、场景 客服到银行办理业务: 1、取号排队 2、办理具体现金/陷阱/转账/企业/个人/理财业务 3、给银行工作人员评分二、实质 它定义了一个操作中的算法骨架...

设计模式学习笔记--模板方法(Template Method)模式

模板方法模式:准备一个抽象类,将部分逻辑以具体方法以及具体构造的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方法实现这些抽象的方法,从而对剩余的逻辑有不同的实现。这就...

设计模式C++学习笔记之九(Template Method模板方法模式)

模板模式也是相当简单的一种模式,而且是比较常用的。模板模式是定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定...

设计模式笔记11:模板方法设计模式(Template Method Pattern)

一、模板方法模式的内容 模板模式在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。模板方法是一种类行为型模式。 模板方法...

23种设计模式之模板方法(Template Method)

23种设计模式之模板方法(Template Method) 模板方法模式是一种类的行为型模式,用于定义一个操作中算法的骨架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可...

Java设计模式—模板方法(Template Method)

模板是指在薄片塑料板上面写字后挖空,再使用毛笔或色笔涂满挖空部分,就能看到纯手工而以不失工整的字样,看到模板上的挖空形状,马上就知道最后会变出什么样子的字,不过实际上所显现出来的字样还是要依所使用的画...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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