1、抽象工厂模式UML

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

图1. 抽象工厂模式的UML

2、C++实现

  C++实现类图为:

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

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

  其中,AbstractFactory的实现代码为:

 //抽象工厂类基类。
class AbstractFactory
{
public:
AbstractFactory();
~AbstractFactory(); //创建具体的产品的抽象工厂方法。
//创建A类对象。
virtual ProductA * CreateProductA() = ; //创建B类产品对象。
virtual ProductB * CreateProductB() = ;
};

  ConcreteFactoryA的实现代码为:

 class ConcreteFactory1 :
public AbstractFactory
{
public:
ConcreteFactory1();
~ConcreteFactory1(); //创建ConcreteProductA1的抽象工厂方法。
ProductA * CreateProductA(); //创建ConcreteProductA1的抽象工厂方法。
ProductB * CreateProductB(); };//end class ConcreteFactoryA ProductA * ConcreteFactory1::CreateProductA()
{
ProductA * pa = new ConcreteProductA1();
return pa;
}//end method CreateProductA ProductB * ConcreteFactory1::CreateProductB()
{
ProductB * pb = new ConcreteProductB1();
return pb;
}//end method CreateProductB

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

3、Java的实现

  Java实现的类视图为:

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

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

  其中,AbstractFactory的代码为:

 //抽象工厂类。
public interface AbstractFactory { //创建A类产品的抽象工厂方法。
public abstract ProductA CreateProductA(); //创建B类产品的抽象工厂方法。
public abstract ProductB CreateProductB(); }//end interface AbstractFactory

  ConcreteFactory1的代码为:

 public class ConcreteFactory1 implements AbstractFactory {

     //创建ConcreteProductA1的对象。
@Override
public ProductA CreateProductA() {
// TODO Auto-generated method stub
return new ConcreteProductA1();
}//end method CreateProductA //创建ConcreteProductB1的对象。
@Override
public ProductB CreateProductB() {
// TODO Auto-generated method stub
return new ConcreteProductB1();
}//end method CreateProductB }//end class ConcreteFactory1

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

4、点击下载源码

05-18 00:00
查看更多