十一、抽象工厂模式

来源:互联网 发布:蔬东坡软件多少钱 编辑:程序博客网 时间:2024/05/29 03:53

抽象工厂模式(Abstract Factory)提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。AbstractFactory模式是为了创建一组(有多类)相关或依赖的对象提供创建接口,二Factory模式是为了一类对象提供创建接口或延迟对象的创建刀子类中实现。


//Product.h#ifndef _PRODUCT_H_#define _PRODUCT_H_using namespace std;class AbstractProductA{};class AbstractProductB{};class ProductA1:public AbstractProductA{public:ProductA1(){cout<<"ProductA1..."<<endl;}};class ProductA2:public AbstractProductA{public:ProductA2(){cout<<"ProductA2..."<<endl;}};class ProductB1:public AbstractProductB{public:ProductB1(){cout<<"ProductB1..."<<endl;}};class ProductB2:public AbstractProductB{public:ProductB2(){cout<<"ProductB2..."<<endl;}};#endif

//AbstractFactory.h#ifndef _ABSTRACTFACTORY_H_#define _ABSTRACTFACTORY_H_#include "Product.h"class AbstractFactroy{public:virtual AbstractProductA* CreateProductA(){return 0;};virtual AbstractProductB* CreateProductB(){return 0;};};class ConcreteFactory1:public AbstractFactroy{public:AbstractProductA* CreateProductA(){return new ProductA1();}AbstractProductB* CreateProductB(){return new ProductB1();}};class ConcreteFactory2:public AbstractFactroy{public:AbstractProductA* CreateProductA(){return new ProductA2();}AbstractProductB* CreateProductB(){return new ProductB2();}};#endif

//main.cpp#include<iostream>#include "AbstractFactory.h"int main(){AbstractFactroy* af1 = new ConcreteFactory1();af1->CreateProductA();af1->CreateProductB();AbstractFactroy* af2 = new ConcreteFactory2();af2->CreateProductA();af2->CreateProductB();return 0;}



原创粉丝点击