C++模式(三)模板方法模式
2015-11-10 20:31
597 查看
代码示例如下:
#include <iostream>
using namespace std;
/* 抽象类 */
class AbstractClass
{
public:
~AbstractClass()
{
}
AbstractClass()
{
}
void TemplateMethod()
{
this->operator1();
this->operator2();
}
protected:
virtual void operator1() = 0;
virtual void operator2() = 0;
};
class ConcreteClass1:public AbstractClass
{
public:
ConcreteClass1()
{
}
~ConcreteClass1();
protected:
void operator1()
{
cout << "class1 operator1" << endl;
}
void operator2()
{
cout << "class1 operator2" << endl;
}
};
class ConcreteClass2:public AbstractClass
{
public:
ConcreteClass2()
{
}
~ConcreteClass2();
protected:
void operator1()
{
cout << "class2 operator1" << endl;
}
void operator2()
{
cout << "class2 operator2" << endl;
}
};
int main( void )
{
AbstractClass* p1 = new ConcreteClass1();
AbstractClass* p2 = new ConcreteClass2();
p1->TemplateMethod();
p2->TemplateMethod();
return 0;
}
#include <iostream>
using namespace std;
/* 抽象类 */
class AbstractClass
{
public:
~AbstractClass()
{
}
AbstractClass()
{
}
void TemplateMethod()
{
this->operator1();
this->operator2();
}
protected:
virtual void operator1() = 0;
virtual void operator2() = 0;
};
class ConcreteClass1:public AbstractClass
{
public:
ConcreteClass1()
{
}
~ConcreteClass1();
protected:
void operator1()
{
cout << "class1 operator1" << endl;
}
void operator2()
{
cout << "class1 operator2" << endl;
}
};
class ConcreteClass2:public AbstractClass
{
public:
ConcreteClass2()
{
}
~ConcreteClass2();
protected:
void operator1()
{
cout << "class2 operator1" << endl;
}
void operator2()
{
cout << "class2 operator2" << endl;
}
};
int main( void )
{
AbstractClass* p1 = new ConcreteClass1();
AbstractClass* p2 = new ConcreteClass2();
p1->TemplateMethod();
p2->TemplateMethod();
return 0;
}
相关文章推荐
- C++—特殊成员函数
- 由C++构造函数初始值列表想到的
- C++编程经验-返回局部变量的讨论
- c++primer第五版第十二章12.20习题用一个StrBlobPtr打印出StrBlob中的元素
- 操作系统中轮转法的模拟
- c++从入门到实践
- 题目1.2.4 The Seven Percent Solution(C++)
- Rational Rose 2003 逆向工程转换C++源代码成UML类图
- C语言学习——怪异的事情
- 在C语言中利用PCRE实现正则表达式
- 【c语言】 编写一个函数reverse_string(char * string)(递归实现)
- C++单链表实现冒泡排序
- C++中实数(以float为例)的存储方式
- C++链表翻转
- 黑马程序员--C语言基础--指针
- C++标准库中的list的实现原理
- 01-C++11的使用
- C语言基础-指针
- C++基础::类设计的几大原则
- C++中指针和引用的区别(超详细)