C++设计模式之一:Abstract Factory(抽象工厂)
2012-05-28 14:06
274 查看
一:意图
提供一个创建一系列相关或者相互依赖对象的接口,而无需指定具体的类;
二:类图
三、组成元素:
AbstractFactory:声明一个抽象产品对象的操作接口;
ConcreteFactroy:实现创建对象的具体操作;
AbstractProduct:一类产品的抽象接口;
Product:被相应工厂创建的具体产品;
四、实现:
#include "iostream"
using namespace std;
class AbstractProductA
{
};
class ProductA1:public AbstractProductA
{
};
class ProductA2:public AbstractProductA
{
};
class AbstractProductB
{
};
class ProductB1:public AbstractProductB
{
};
class ProductB2:public AbstractProductB
{
};
class AbstractFactory
{
public:
virtual AbstractProductA* CreateProductA()=0;
virtual AbstractProductB* CreateProductB()=0;
};
class ConcreteFactroy1:public AbstractFactory
{
public:
AbstractProductA* CreateProductA()
{
cout<<"ProductA1 created!"<<endl;
return new ProductA1;
}
AbstractProductB* CreateProductB()
{
cout<<"ProductB1 created!"<<endl;
return new ProductB1;
}
};
class ConcreteFactroy2:public AbstractFactory
{
public:
AbstractProductA* CreateProductA()
{
cout<<"ProductA2 created!"<<endl;
return new ProductA2;
}
AbstractProductB* CreateProductB()
{
cout<<"ProductB2 created!"<<endl;
return new ProductB2;
}
};
void main()
{
AbstractFactory* abs1=new ConcreteFactroy1();
AbstractFactory* abs2=new ConcreteFactroy2();
AbstractProductA* productA1=abs1->CreateProductA();
AbstractProductB* productB1=abs1->CreateProductB();
AbstractProductA* productA2=abs2->CreateProductA();
AbstractProductB* productB2=abs2->CreateProductB();
}
提供一个创建一系列相关或者相互依赖对象的接口,而无需指定具体的类;
二:类图
三、组成元素:
AbstractFactory:声明一个抽象产品对象的操作接口;
ConcreteFactroy:实现创建对象的具体操作;
AbstractProduct:一类产品的抽象接口;
Product:被相应工厂创建的具体产品;
四、实现:
#include "iostream"
using namespace std;
class AbstractProductA
{
};
class ProductA1:public AbstractProductA
{
};
class ProductA2:public AbstractProductA
{
};
class AbstractProductB
{
};
class ProductB1:public AbstractProductB
{
};
class ProductB2:public AbstractProductB
{
};
class AbstractFactory
{
public:
virtual AbstractProductA* CreateProductA()=0;
virtual AbstractProductB* CreateProductB()=0;
};
class ConcreteFactroy1:public AbstractFactory
{
public:
AbstractProductA* CreateProductA()
{
cout<<"ProductA1 created!"<<endl;
return new ProductA1;
}
AbstractProductB* CreateProductB()
{
cout<<"ProductB1 created!"<<endl;
return new ProductB1;
}
};
class ConcreteFactroy2:public AbstractFactory
{
public:
AbstractProductA* CreateProductA()
{
cout<<"ProductA2 created!"<<endl;
return new ProductA2;
}
AbstractProductB* CreateProductB()
{
cout<<"ProductB2 created!"<<endl;
return new ProductB2;
}
};
void main()
{
AbstractFactory* abs1=new ConcreteFactroy1();
AbstractFactory* abs2=new ConcreteFactroy2();
AbstractProductA* productA1=abs1->CreateProductA();
AbstractProductB* productB1=abs1->CreateProductB();
AbstractProductA* productA2=abs2->CreateProductA();
AbstractProductB* productB2=abs2->CreateProductB();
}
相关文章推荐
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)zz
- [转]C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- gof设计模式——抽象工厂 c++实现
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- C++设计模式之抽象工厂(Abstract Factory)模式
- C++设计模式 -> 创建型 -> 抽象工厂(Abstract Factory)
- 设计模式---抽象工厂(C++版) 希望大家顶一下
- 程序设计模式(二) C++抽象工厂(Abstract Factory)模式
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- .C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 设计模式----抽象工厂C++实现
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- 设计模式之抽象工厂(C++实现)
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- C++设计模式之一 工厂模式(简单工厂、工厂和抽象工厂)
- C++设计模式——单例模式