模板对于学习C++的同学,其实并不陌生。函数有模板函数,类也有模板类。那么这个模板模式是个什么情况?我们可以思考一下,模板的本质是什么。比如说,现在我们需要编写一个简单的比较模板函数。
- template <typename type>
- int compare (type a, type b)
- {
- return a > b ? 1 : 0;
- }
比方说,现在我们需要设计一个流程。这个流程有很多小的步骤完成。然而,其中每一个步骤的方法是多种多样的,我们可以很多选择。但是,所有步骤构成的逻辑是唯一的,那么我们该怎么办呢?其实也简单。那就是在基类中除了流程函数外,其他的步骤函数全部设置为virtual函数即可。
- class basic
- {
- public:
- void basic() {}
- virtual ~basic() {}
- virtual void step1() {}
- virtual void step2() {}
- void process()
- {
- step1();
- step2();
- }
- };
- class data_A : public basic
- {
- public:
- data_A() {}
- ~data_A() {}
- void step1()
- {
- printf("step 1 in data_A!\n");
- }
- void step2()
- {
- printf("step 2 in data_A!\n");
- }
- };
- typedef struct _Basic
- {
- void* pData;
- void (*step1) (struct _Basic* pBasic);
- void (*step2) (struct _Basic* pBasic);
- void (*process) (struct _Basic* pBasic);
- }Basic;
- void process(struct _Basic* pBasic)
- {
- pBasic->step1(pBasic);
- pBasic->step2(pBasic);
- }