AbstractFactory模式
来源:互联网 发布:kali linux怎么更新源 编辑:程序博客网 时间:2024/05/23 00:03
//Product.h
#ifndef _PRODUCT_H
#define _PRODUCT_H
class AbstractProductA
{
public:
~AbstractProductA();
protected:
AbstractProductA();
};
class AbstractProductB
{
public:
~AbstractProductB();
protected:
AbstractProductB();
};
class ProdcutA1:AbstractProductA
{
public:
ProdcutA1();
~ProductA1();
};
class ProductA2:AbstractProductA
{
public:
ProductA2();
~ProductA2();
};
class ProductB1:AbstractProductB
{
public:
ProductB1();
~ProductB1();
};
class ProductB2:AbstractProductB
{
public:
ProductB2();
~ProductB2();
};
#endif
//Product.cpp
#include "Product.h"
#include <iostream>
using namespace std;
AbstractFactoryA::AbstractFactoryA()
{}
AbstractFactoryA::~AbstractFactoryA()
{}
AbstractFactoryB::AbstractFactoryB()
{}
AbstractFactoryB::~AbstractFactoryB()
{}
ProdcutA1::ProductA1()
{
cout << "ProductA1.." << endl;
}
ProductA1::~ProductA1()
{}
ProdcutA2::ProductA2()
{
cout << "ProductA2.." << endl;
}
ProductA2::~ProductA2()
{}
ProdcutB1::ProductB1()
{
cout << "ProductB1.." << endl;
}
ProductB1::~ProductB1()
{}
ProdcutB2::ProductB2()
{
cout << "ProductB2.." << endl;
}
ProductB2::~ProductB2()
{}
//AbstractFactory.h
#ifndef _FACTORY_H
#define _FACTORY_H
class AbstractProductA;
class AbstractProductB;
class AbstractFactory
{
public:
virtual ~AbstractFactory();
virtual AbstractProductA * CreateProductA() = 0;
virtual AbstractProductB * CreateProductB() = 0;
protected:
AbstractFactory();
};
class ConcreteFactory1
{
public:
ConcreteFactory1();
~ConcreteFactory1();
AbstractProductA * CreateProductA();
AbstractProductB * CreateProductB();
};
class ConcreteFactory2
{
public:
ConcreteFactory2();
~ConcreteFactory2();
AbstractProductA * CreateProductA();
AbstractProductB * CreateProductB();
};
#endif
//AbstractFactory.cpp
#include "AbstractFactory.h"
#include "Product.h"
#include <iostream>
using namespace std;
class AbstractFactory::AbstractFactory()
{}
class AbstractFactory::~AbstractFactory()
{}
class ConcreteFactory1::ConcreteFactory1()
{
}
class ConcreteFactory1::~ConcreteFactory1()
{}
AbstractProductA * class ConcreteFactory1::CreateProductA()
{
return new ProductA1();
}
AbstractProductB * class ConcreteFactory1::CreateProductB()
{
return new ProductB1();
}
class ConcreteFactory2::ConcreteFactory2()
{
}
class ConcreteFactory2::~ConcreteFactory2()
{}
AbstractProductA * class ConcreteFactory2::CreateProductA()
{
return new ProductA2();
}
AbstractProductB * class ConcreteFactory2::CreateProductB()
{
return new ProductB2();
}
//main.cpp
#include "AbstractFactory.h"
#include <iostream>
using namespace std;
void main(int argc, char * argv[])
{
AbstractFactoryA1 *cf1 = new AbstractFactoryA1();
cf1 -> CreateProductA();
cf1 -> CreateProductB();
AbstractFactoryA2 *cf2 = new AbstractFactoryA2();
cf2 -> CreateProductA();
cf2 -> CreateProductB();
return 0;
}
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory模式
- AbstractFactory 模式
- 设计模式之 abstractfactory
- python实现AbstractFactory模式
- AbstractFactory抽象工厂模式
- AbstractFactory抽象工厂模式
- C++ Factory & AbstractFactory 模式
- AbstractFactory模式讲解
- 设计模式之AbstractFactory
- 设计模式-AbstractFactory
- AbstractFactory抽象工厂模式
- 抽象工厂模式 AbstractFactory
- 设计模式(1) AbstractFactory
- Principles of OOD
- Asp.net Mvc Framework 一 (安装并建立示例程序)
- 老紫竹JavaEE培训教程(3)- 登录表单和密码判断
- Asp.net Mvc Framework 二 (URL Routing初解)
- Programming Ruby 读书笔记(八)
- AbstractFactory模式
- System.Web.Routing入门及进阶 上篇
- c++强制类型转换:dynamic_cast、const_cast 、static_cast、reinterpret_cast
- 3Q中的AQ是什么意思?
- System.Web.Routing入门及进阶 下篇
- Asp.net Mvc Framework 三 (Controller与View)
- Asp.net Mvc Framework 四 (在.net2.0下运行)
- Asp.net Mvc Framework在.net 2.0/IIS6下运行
- C#中的事件