1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| #include<iostream> using namespace std;
#include<iostream> using namespace std;
class Shoe{ public: virtual ~Shoe(){}; virtual void show() = 0;
}; class NikeShoe:public Shoe{ public: void show(){
cout<<"我是Nike的鞋子"<<endl; }
};
class Cloth{ public: virtual ~Cloth(){}; virtual void show() = 0;
}; class NikeCloth:public Cloth{ public: void show(){
cout<<"我是Nike的衣服"<<endl; }
};
template<class AbsProductType_t> class Factory{ public: virtual ~Factory(){}; virtual AbsProductType_t* MakeProduct() = 0;
};
template<class AbsProductType_t,class ConcreatProductType_t> class ConcreatFactory : public Factory<AbsProductType_t>{ public: AbsProductType_t* MakeProduct() { AbsProductType_t* tmp = new ConcreatProductType_t; return tmp; }
};
int main(){ ConcreatFactory<Cloth,NikeCloth> f; Cloth* ns = f.MakeProduct(); ns->show(); }
|