1工厂方法模式的核心内容是:
A:每种方法通过独立的类来表示。
B:通过工厂来创建实例化方法
C:理解:带同一个妹子到不同的地点(麦当劳,肯德基….)去吃饭.
2工厂方法模式的作用:程序访问不同的工厂,来让工厂创建自己想要的操作。
3工厂方法模式具体描述
工厂方法模式:核心工厂类不再负责所有产品的创建,
而是将具体创建的工作交给子类去做,成为一个抽象工厂角色
仅负责给出具体工厂类必须实现的接口,
而不接触哪一个产品类应当被实例化这种细节。
请MM去麦当劳吃汉堡,不同的MM有不同的口味,
要每个都记住是一件烦人的事情,我一般采用Factory Method模式,
带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,
让MM直接跟服务员说就行了。
4.工厂方法模式类图
5.代码:
#include<iostream>
#include
<string>
using
namespace
std;
//工厂方法模式:核心工厂类不再负责所有产品的创建,
//而是将具体创建的工作交给子类去做,成为一个抽象工厂角色
//,仅负责给出具体工厂类必须实现的接口,
//而不接触哪一个产品类应当被实例化这种细节。
//请MM去麦当劳吃汉堡,不同的MM有不同的口味,
//要每个都记住是一件烦人的事情,我一般采用Factory Method模式,
//带着MM到服务员那儿,说“要一个汉堡”,具体要什么样的汉堡呢,
//让MM直接跟服务员说就行了。
//操作类
class
Operation
{
public:
double
numberA,
numberB;
virtual
double
getResult()//
{
return 0;
}
};
//加操作
class
addOperation :public
Operation
{
double
getResult()
{
return
numberA +
numberB;
}
};
//减操作
class
subOperation :public
Operation
{
double
getResult()
{
return
numberA -
numberB;
}
};
//乘操作
class
mulOperation :public
Operation
{
double
getResult()
{
return
numberA*numberB;
}
};
//除操作
class
divOperation :public
Operation
{
double
getResult()
{
return
numberA /
numberB;
}
};
//工厂
class
IFactory
{
public:
virtual
Operation *createOperation()
= 0;
};
//add工厂
class
AddFactory :public
IFactory
{
public:
static
Operation *createOperation()
{
return
new
addOperation();
}
};
//减工厂
class
SubFactory :public
IFactory
{
public:
static
Operation *createOperation()
{
return
new
subOperation();
}
};
//乘工厂
class
MulFactory :public
IFactory
{
public:
static
Operation *createOperation()
{
return
new
mulOperation();
}
};
//除操作
class
DivFactory :public
IFactory
{
public:
static
Operation *createOperation()
{
return
new
divOperation();
}
};
int
main()
{
Operation *oper
= MulFactory::createOperation();
oper->numberA
= 9;
oper->numberB
= 99;
cout <<
oper->getResult()
<< endl;
cin.get();
return 0;
}
运行结果如下:
891