模板模式c++代码实现
2014-06-24 15:17
197 查看
模板--定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
书上看到了对于模板模式的讨论:
模板的关键点是将通用算法封装在抽象基类中,并将不同的算法细节放到子类中实现。
模板模式获得一种反向控制结构效果,这也是面向对象系统的分析和设计中一个原则DIP(依赖倒置)。其含义就是父类调用子类的操作(高层
模块调用低层模块的操作),低层模块实现高层模块声明的接口。这样控制权在父类(高层模块),低层模块反而要依赖高层模块。
但子类中的实现的方法是不能被别的类复用的。模板模式暴露的问题也正是继承所固有的问题,Strategy模式则通过组合来
达到和模板模式类似的效果,其代价就是空间和时间上的代价。
百度上关于依赖倒转原则
依赖倒转原则(Dependency Inversion Principle)讲的是:要依赖于抽象,不要依赖于具体。
依赖倒转原则的一种表述是:细节应当依赖于抽象,抽象不应当依赖于细节。
另一种描述是:要针对接口编程,不要针对实现编程。意思就是应当使用接口和抽象类而不是具体
类进行变量的类型声明、参数的类型声明、方法的返回类型声明以及数据类型的转换等。
// template.cpp : 定义控制台应用程序的入口点。 // #include<iostream> using namespace std; class AbstractClass { public: void f() { f1(); f2(); } virtual void f1() { cout << "AbstractClass::f1" << endl; } virtual void f2() { cout << "AbstractClass::f2" << endl; } }; class ConcreteClass1:public AbstractClass { public: virtual void f1() { cout << "ConcreteClass1::f1" << endl; } virtual void f2() { cout << "ConcreteClass1::f2" << endl; } }; class ConcreteClass2:public AbstractClass { public: virtual void f1() { cout << "ConcreteClass2::f1" << endl; } virtual void f2() { cout << "ConcreteClass2::f2" << endl; } }; int main() { AbstractClass *a; ConcreteClass1 c1; ConcreteClass2 c2; a = &c1; a->f(); a = &c2; a->f(); return 0; }
书上看到了对于模板模式的讨论:
模板的关键点是将通用算法封装在抽象基类中,并将不同的算法细节放到子类中实现。
模板模式获得一种反向控制结构效果,这也是面向对象系统的分析和设计中一个原则DIP(依赖倒置)。其含义就是父类调用子类的操作(高层
模块调用低层模块的操作),低层模块实现高层模块声明的接口。这样控制权在父类(高层模块),低层模块反而要依赖高层模块。
但子类中的实现的方法是不能被别的类复用的。模板模式暴露的问题也正是继承所固有的问题,Strategy模式则通过组合来
达到和模板模式类似的效果,其代价就是空间和时间上的代价。
百度上关于依赖倒转原则
依赖倒转原则(Dependency Inversion Principle)讲的是:要依赖于抽象,不要依赖于具体。
依赖倒转原则的一种表述是:细节应当依赖于抽象,抽象不应当依赖于细节。
另一种描述是:要针对接口编程,不要针对实现编程。意思就是应当使用接口和抽象类而不是具体
类进行变量的类型声明、参数的类型声明、方法的返回类型声明以及数据类型的转换等。
相关文章推荐
- Singleton模式的C++实现研究(示例代码)
- C++设计模式:Singleton的模板实现之一
- c++ 实现模板方法模式
- C++ 使用模板 实现单例模式
- 单件模式的C++模板实现
- 设计模式C++实现(5)——原型模式、模板方法模式
- 模板方法模式c++实现
- C++模板实现的通用工厂方法模式
- 《大话设计模式》读书笔记(C++代码实现) 第二章:策略模式
- C++模板代码的组织方式 ——包含模式(Inclusion Model)
- Singleton模式的C++实现研究(示例代码)
- 设计模式C++实现(5)——原型模式、模板方法模式
- 行为模式之模板方法模式(Template Pattern)C++实现
- C++模板实现的通用工厂方法模式
- C++实现类似反射模式(模板)
- C++之设计模式实现代码
- 单件模式的C++模板实现
- C++高效实现模板方法模式
- 设计模式C++实现(5)——原型模式、模板方法模式
- C++实现网络服务器命令模式(设计及模板实现)