工厂模式
来源:互联网 发布:linux ab压力测试 编辑:程序博客网 时间:2024/06/10 17:16
//工厂模式 Product 功能(基类名) Factory工厂(基类名)
//工厂里面只封装一个指针 用来new
#include<iostream>
using namespace std;
class Product{//功能基类
public:
Product()
{
cout<<"Product.com"<<endl;
}
virtual void Print()
{
cout<<"Product.Print.com"<<endl;
}
virtual ~Product()
{
cout<<"Product.des"<<endl;
}
};
class ProductA:public Product{//功能A
public:
ProductA()
{
cout<<"ProductA.com"<<endl;
}
void Print()
{
cout<<"ProductA.Print.com"<<endl;
}
~ProductA()
{
cout<<"ProductA.des"<<endl;
}
};
class ProductB:public Product{//功能B
public:
ProductB()
{
cout<<"ProductB.com"<<endl;
}
void Print()
{
cout<<"ProductB.Print.com"<<endl;
}
~ProductB()
{
cout<<"ProductB.des"<<endl;
}
};
class ProductC:public Product{//功能C
public:
ProductC()
{
cout<<"ProductC.com"<<endl;
}
void Print()
{
cout<<"ProductC.Print.com"<<endl;
}
~ProductC()
{
cout<<"ProductC.des"<<endl;
}
};
class Factory{//工厂基类
protected:
Product * A;
public :
Factory(Product * x=NULL)
{
A=x;
cout<<"Protory.com"<<endl;
}
virtual void du()
{
cout<<"Factory.du"<<endl;
}
virtual ~Factory()
{
delete A;
A=NULL;
cout<<"Factory.des"<<endl;
}
};
class FactoryA:public Factory{//工厂A
public:
FactoryA()
{
A=new ProductA();
cout<<"FactoryA.com"<<endl;
}
void du()
{
A->Print();
}
~FactoryA()
{
delete A;
A=NULL;
cout<<"FactoryA.des"<<endl;
}
};
class FactoryB:public Factory{//工厂B
public:
FactoryB()
{
A=new ProductB();
cout<<"FactoryB.com"<<endl;
}
void du()
{
A->Print();
}
~FactoryB()
{
delete A;
A=NULL;
cout<<"FactoryB.des"<<endl;
}
};
class FactoryC:public Factory{//工厂C
public:
FactoryC()
{
A=new ProductC();
cout<<"FactoryC.com"<<endl;
}
void du()
{
A->Print();
}
~FactoryC()
{
delete A;
A=NULL;
cout<<"FactoryC.des"<<endl;
}
};
int main(void)
{
Factory * p=new FactoryB();
p->du();
delete p;
return 0;
}
//工厂里面只封装一个指针 用来new
#include<iostream>
using namespace std;
class Product{//功能基类
public:
Product()
{
cout<<"Product.com"<<endl;
}
virtual void Print()
{
cout<<"Product.Print.com"<<endl;
}
virtual ~Product()
{
cout<<"Product.des"<<endl;
}
};
class ProductA:public Product{//功能A
public:
ProductA()
{
cout<<"ProductA.com"<<endl;
}
void Print()
{
cout<<"ProductA.Print.com"<<endl;
}
~ProductA()
{
cout<<"ProductA.des"<<endl;
}
};
class ProductB:public Product{//功能B
public:
ProductB()
{
cout<<"ProductB.com"<<endl;
}
void Print()
{
cout<<"ProductB.Print.com"<<endl;
}
~ProductB()
{
cout<<"ProductB.des"<<endl;
}
};
class ProductC:public Product{//功能C
public:
ProductC()
{
cout<<"ProductC.com"<<endl;
}
void Print()
{
cout<<"ProductC.Print.com"<<endl;
}
~ProductC()
{
cout<<"ProductC.des"<<endl;
}
};
class Factory{//工厂基类
protected:
Product * A;
public :
Factory(Product * x=NULL)
{
A=x;
cout<<"Protory.com"<<endl;
}
virtual void du()
{
cout<<"Factory.du"<<endl;
}
virtual ~Factory()
{
delete A;
A=NULL;
cout<<"Factory.des"<<endl;
}
};
class FactoryA:public Factory{//工厂A
public:
FactoryA()
{
A=new ProductA();
cout<<"FactoryA.com"<<endl;
}
void du()
{
A->Print();
}
~FactoryA()
{
delete A;
A=NULL;
cout<<"FactoryA.des"<<endl;
}
};
class FactoryB:public Factory{//工厂B
public:
FactoryB()
{
A=new ProductB();
cout<<"FactoryB.com"<<endl;
}
void du()
{
A->Print();
}
~FactoryB()
{
delete A;
A=NULL;
cout<<"FactoryB.des"<<endl;
}
};
class FactoryC:public Factory{//工厂C
public:
FactoryC()
{
A=new ProductC();
cout<<"FactoryC.com"<<endl;
}
void du()
{
A->Print();
}
~FactoryC()
{
delete A;
A=NULL;
cout<<"FactoryC.des"<<endl;
}
};
int main(void)
{
Factory * p=new FactoryB();
p->du();
delete p;
return 0;
}
0 0
- 工厂模式 -- 工厂方法
- 工厂模式 -- 抽象工厂
- 工厂模式-简单工厂
- 工厂模式-工厂方法
- 工厂模式:静态工厂
- 工厂模式-简单工厂
- 工厂模式-抽象工厂
- 工厂模式-工厂方法
- 工厂 > 工厂方法模式
- 工厂模式-静态工厂
- 工厂模式-抽象工厂
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 工厂模式
- 使用Dom4j 解析XML
- 【java】事件监听——通过点击不同的按钮,让面板的背景色发生相应的变化
- 2017/4/14-4/15
- RecyclerView的基本用法
- UVALive
- 工厂模式
- AsyncTask之加载图片
- python-框架-网页爬虫-文本处理-科学计算-可视化-机器学习-数据挖掘-深度学习
- 常用网站
- java 锁与可重入锁
- ELK框架搭建
- 【数据库系统概念部分习题】第二章 关系模型介绍
- pat 1073. Scientific Notation
- JWT(JSON Web Token)