工厂方法模式最简实现

工厂方法模式最简实现
价值:有一个工厂方法可以加工不同的商品。
具体解释:在某个类(Creator)的工厂方法(FactoryMethod)能被多态成加工不同产品的方法。(如果有这么样的一个方法存在,那么就是实现了该模式,这是该模式的唯一特性)
该模式有如下两个要点:
1.该函数可多态(即:包含该函数的类是多态的)
2.该函数的返回值是多态的(Product)
如下代码实现(为了体现多态性,我把ConcreteCreate变成了CreateA和CreateB)
#include
using namespace std;

// 抽象层
class Product
{
public:
virtual void call(){
}
};
class Creator
{
public:
void AnOperation(){
Product* p = FactoryMethod();
//其他逻辑。。。
p->call();
//其他逻辑
}
virtual Product* FactoryMethod(){
return 0;
}
};

// 具体层
class ProductA:public Product
{
public:
void call(){
cout<<“ProductA:call”<<"\n";
}
};
class ProductB:public Product
{
public:
void call(){
cout<<“ProductB:call”<<"\n";
}
};
class CreatorA:public Creator
{
public:
Product* FactoryMethod(){
return new ProductA();
}
};
class CreatorB:public Creator
{
public:
Product* FactoryMethod(){
return new ProductB();
}
};

//客户端调用
int main()
{
Creator* createA = new CreatorA();
createA->AnOperation();
Creator* createB = new CreatorB();
createB->AnOperation();

//看代码不用考虑一下内容
int cin_a;
cin>>cin_a;
return 0;

}

猜你喜欢

转载自blog.csdn.net/xie__jin__cheng/article/details/87792525