//工厂方法只用于创建lenovo一个类型的电脑
//抽象工厂却可以生产一个产品族
#include <iostream>
using namespace std;
class Product{
public:
Product(){}
virtual ~Product() = 0;
};
Product::~Product(){}
class Lenovo:public Product{
public:
Lenovo(){cout << "a Lenovo computer created" << endl;}
~Lenovo(){cout << "a Lenovo computer destoryed" << endl;}
};
class HighLenovo:public Lenovo{
public:
HighLenovo(){cout << "a HighLenovo computer created" << endl;}
~HighLenovo(){cout << "a HighLenovo computer destoryed" << endl;}
};
class Asus:public Product{
public:
Asus(){cout << "a Asus computer created" << endl;}
~Asus(){cout << "a Asus computer destoryed" << endl;}
};
class HighAsus:public Asus{
public:
HighAsus(){cout << "a HighAsus computer created" << endl;}
~HighAsus(){cout << "a HighAsus computer destoryed" << endl;}
};
class Factory{
public:
Factory(){}
virtual ~Factory(){}
virtual Product* createLenovo() = 0;
virtual Product* createAsus() = 0;
};
class HighComputerFctory:public Factory{
public:
HighComputerFctory(){}
~HighComputerFctory(){}
Product* createLenovo(){
return new HighLenovo();
}
Product* createAsus(){
return new HighAsus();
}
};
int main(){
//根据具体的需要创建具体的工厂
Factory* f = new HighComputerFctory;
//调用接口创建产品
Product* l = f->createLenovo();
Product* a = f->createAsus();
delete a;
delete l;
delete f;
return 0;
}
抽象工厂
最新推荐文章于 2024-04-13 16:38:06 发布