【设计模式】

来源:互联网 发布:境外网络电视直播apk 编辑:程序博客网 时间:2024/06/06 11:43

模板模式是指在模板中将算法的基本步骤都定义好,每个步骤的具体实现放在子类中去实现,比如泡茶、泡牛奶和泡咖啡的基本步骤都可以分为烧开水、加原料、冲泡,其中加原料这一步的具体实现冲每种饮料都不同,应该放在具体子类中去实现,见代码:

#pragma once#include<iostream>using namespace std;class IDrink{public:virtual void fun() = 0;};template<typename T,typename BaseT = IDrink>class DrinkImpl : public IDrink{public:DrinkImpl(){}~DrinkImpl(){} virtual void fun() { T* pT = static_cast<T*>(this); f1(); pT->f2(); f3(); }protected: void f1() { cout<<"烧热水\n"; } void f3() { cout << "可以喝了\n"; }};class Coffee : public DrinkImpl<Coffee>{public:void f2(){cout << "冲咖啡\n";}};class Tea : public DrinkImpl<Tea>{public:void f2(){cout << "冲茶\n";}};class Milk : public DrinkImpl<Milk>{public:void f2(){cout << "冲牛奶\n";}};
#include"Test.h"#include <time.h>int main(){IDrink* pCoffee = new Coffee;IDrink* pTea = new Tea;IDrink* pMilk = new Milk;pCoffee->fun();pTea->fun();pMilk->fun();delete pMilk;delete pTea;delete pCoffee;system("pause");}


输出结果:

烧热水
冲咖啡
可以喝了
烧热水
冲茶
可以喝了
烧热水
冲牛奶
可以喝了
请按任意键继续. . .

注:这里为模板三个类加了一个接口

0 0