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;
    }
    
    
  • 相关阅读:
    python+selenium之中类/函数/模块的简单介绍和方法调用
    python之类
    Python+Selenium之断言对应的元素是否获取以及基础知识回顾
    Python+Selenium之摘取网页上全部邮箱
    C# 事件
    IConfigurationSectionHandler 接口
    ReaderWriterLockSlim 类
    log4net 按照日期备份日志
    Redis .net 客户端 分布式锁
    SQL Server Compact/SQLite Toolbox
  • 原文地址:https://www.cnblogs.com/newwy/p/1855194.html
Copyright © 2011-2022 走看看