抽象工厂模式的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、点击下载源码

转载于:https://www.cnblogs.com/minbaba/p/6366126.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值