Factory模式的两个最重要的功能:
1)定义创建对象的接口,封装了对象的创建;
2)使得具体化类的工作延迟到了子类中。
![]()
1 ////////////Factory.h////////////////////////
2 #ifndef _FACTORY_H_
3 #define _FACTORY_H_
4
5 class Product ;
6
7 class Factory
8 {
9 public:
10 virtual ~Factory() = 0 ;
11
12 virtual Product* CreatProduct() = 0;
13
14 protected:
15 Factory();
16 private:
17 };
18
19 class ConcreteFactory : public Factory
20 {
21 public:
22 ~ConcreteFactory();
23 ConcreteFactory();
24 Product* CreatProduct();
25 protected:
26 private:
27 };
28
29 #endif
1 ////////////Factory.cpp////////////////////////
2 #include "Factory.h"
3 #include "Product.h"
4
5 #include <iostream>
6 using namespace std;
7
8 Factory::Factory()
9 {
10
11 }
12
13 Factory::~Factory()
14 {
15
16 }
17
18 ConcreteFactory::ConcreteFactory()
19 {
20 cout<<"ConcreteFactory....."<<endl;
21 }
22
23 ConcreteFactory::~ConcreteFactory()
24 {
25
26 }
27
28 Product* ConcreteFactory::CreatProduct()
29 {
30 return new ConcreteProduct();
31 }
1 ////////////Product.h////////////////////////
2 #ifndef _PRODUCT_H_
3 #define _PRODUCT_H_
4 class Product
5 {
6 public:
7 virtual ~Product()=0;
8
9 protected:
10 Product();
11 private:
12 };
13
14
15 class ConcreteProduct : public Product
16 {
17 public:
18 virtual ~ConcreteProduct();
19 ConcreteProduct();
20 protected:
21 private:
22 };
23
24
25 #endif
1 ////////////Product.cpp////////////////////////
2 #include "Product.h"
3 #include <iostream>
4 using namespace std;
5
6 Product::Product()
7 {
8
9 }
10
11 Product::~Product()
12 {
13
14 }
15
16 ConcreteProduct::ConcreteProduct()
17 {
18 cout<<"ConcreteProduct"<<endl ;
19 }
20
21 ConcreteProduct::~ConcreteProduct()
22 {
23
24 }
1 ////////////main.cpp////////////////////////
2 #include "Factory.h"
3 #include "Product.h"
4
5 #include <iostream>
6 using namespace std;
7
8 int main()
9 {
10 Factory *fac = new ConcreteFactory() ;
11
12 Product *p = fac->CreatProduct();
13 getchar();
14 return 0 ;
15 }