工厂模式

来源:互联网 发布: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;
}


 
0 0
原创粉丝点击