zoukankan      html  css  js  c++  java
  • 设计模式抽象工厂C++实现

    /*********************************
    *设计模式--抽象工厂实现
    *C++语言
    *Author:WangYong
    *Blog:http://www.cnblogs.com/newwy
    ********************************/
    
    #include <iostream>
    using namespace std;
    
    class AbstractProductA
    {
    	public:
    	virtual ~AbstractProductA() = 0;
    	AbstractProductA(){};
    };
    AbstractProductA::~AbstractProductA(){}
    
    class ProductA1:public AbstractProductA
    {
    	public:
    		ProductA1(){cout<<"ProductA1"<<endl;}	
    };
    
    class ProductA2:public AbstractProductA
    {
    	public:
    		ProductA2(){cout<<"ProductA2"<<endl;}	
    };
    
    class AbstractProductB
    {
    	public:
    	virtual ~AbstractProductB() = 0;
    	AbstractProductB(){};
    };
    AbstractProductB::~AbstractProductB(){}
    
    class ProductB1:public AbstractProductB
    {
    	public:
    		ProductB1(){cout<<"ProductB1"<<endl;}	
    };
    
    class ProductB2:public AbstractProductB
    {
    	public:
    		ProductB2(){cout<<"ProductB2"<<endl;}	
    };
    
    class AbstractFactory
    {
    	public:
    	virtual ~AbstractFactory();
    	virtual AbstractProductA *CreateProductA() = 0;
    	virtual AbstractProductB *CreateProductB() = 0;
    };
    AbstractFactory::~AbstractFactory(){}
    class ConcreteFactory1:public AbstractFactory
    {
    	public:
    	ConcreteFactory1(){cout<<"ConcreteFactory1..."<<endl;}
    	AbstractProductA *CreateProductA()  {return new ProductA1();}
    	AbstractProductB *CreateProductB()  {return new ProductB1();}
    };
    
    class ConcreteFactory2:public AbstractFactory
    {
    	public:
    	ConcreteFactory2(){cout<<"ConcreteFactory2..."<<endl;}
    	AbstractProductA *CreateProductA(){return new ProductA2();}
    	AbstractProductB *CreateProductB(){return new ProductB2();}
    };
    
    int main()
    {
    	AbstractFactory *cf1 = new ConcreteFactory1();
    	cf1->CreateProductA();cf1->CreateProductB();
    	
    	AbstractFactory *cf2 = new ConcreteFactory2();
    	cf2->CreateProductA();cf2->CreateProductB();
    	return 0;
    }
    
    
  • 相关阅读:
    hdu6514 // 二维差分 二维前缀和 基本容斥 压维
    【模板】欧拉函数 & 欧拉筛
    并查集模板 hdu1703
    大数 gcd
    hdu1087 dp
    洛谷p1306 斐波那契公约数
    hdu6814 Tetrahedron 线性求逆元 + 快速幂求逆元
    hdu6867 Tree // DFS
    hdu6869 Slime and Stones // 威佐夫博弈&#183;改
    Python实现EXCEL表格的排序功能
  • 原文地址:https://www.cnblogs.com/newwy/p/1855194.html
Copyright © 2011-2022 走看看