抽象工厂模式的C++、Java实现

1、抽象工厂模式UML

图1. 抽象工厂模式的UML

 2、C++实现

  C++实现类图为:

图2. 抽象工厂模式的C++实现类图

  其中,AbstractFactory的实现代码为:

 1 //抽象工厂类基类。
 2 class AbstractFactory
 3 {
 4 public:
 5     AbstractFactory();
 6     ~AbstractFactory();
 7 
 8     //创建具体的产品的抽象工厂方法。
 9     //创建A类对象。
10     virtual ProductA * CreateProductA() = 0;
11 
12     //创建B类产品对象。
13     virtual ProductB * CreateProductB() = 0;
14 };

  ConcreteFactoryA的实现代码为:

 1 class ConcreteFactory1 :
 2     public AbstractFactory
 3 {
 4 public:
 5     ConcreteFactory1();
 6     ~ConcreteFactory1();
 7 
 8     //创建ConcreteProductA1的抽象工厂方法。
 9     ProductA * CreateProductA();
10 
11     //创建ConcreteProductA1的抽象工厂方法。
12     ProductB * CreateProductB();
13 
14 };//end class ConcreteFactoryA
15 
16 
17 ProductA * ConcreteFactory1::CreateProductA()
18 {
19     ProductA * pa = new ConcreteProductA1();
20     return pa;
21 }//end method CreateProductA
22 
23 ProductB * ConcreteFactory1::CreateProductB()
24 {
25     ProductB * pb = new ConcreteProductB1();
26     return pb;
27 }//end method CreateProductB

  其中,ConcreteFactory2的代码与ConcreteFactory1的相似,不再列出。

 

3、Java的实现

  Java实现的类视图为:

图3. 抽象工厂模式的Java实现类视图

  其中,AbstractFactory的代码为:

 1 //抽象工厂类。
 2 public interface AbstractFactory {
 3 
 4     //创建A类产品的抽象工厂方法。
 5     public abstract ProductA CreateProductA();
 6     
 7     //创建B类产品的抽象工厂方法。
 8     public abstract ProductB CreateProductB();
 9     
10 }//end interface AbstractFactory

  ConcreteFactory1的代码为:

 1 public class ConcreteFactory1 implements AbstractFactory {
 2 
 3     //创建ConcreteProductA1的对象。
 4     @Override
 5     public ProductA CreateProductA() {
 6         // TODO Auto-generated method stub
 7         return new ConcreteProductA1();
 8     }//end method CreateProductA
 9 
10     //创建ConcreteProductB1的对象。
11     @Override
12     public ProductB CreateProductB() {
13         // TODO Auto-generated method stub
14         return new ConcreteProductB1();
15     }//end method CreateProductB
16 
17 }//end class ConcreteFactory1

  ConcreteFactory2的代码与ConcreteFactory1的相似,在此不再列出。

 

4、点击下载源码

posted @ 2017-02-04 20:56  育硕临疯  阅读(284)  评论(0编辑  收藏  举报