码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-02-04 21:14:20      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:href   size   class   代码   创建   creat   detail   imp   csdn   

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、点击下载源码

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

标签:href   size   class   代码   创建   creat   detail   imp   csdn   

原文地址:http://www.cnblogs.com/minbaba/p/6366126.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!