标签:style blog http color os io ar 2014 div
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
标签:style blog http color os io ar 2014 div
原文地址:http://blog.csdn.net/tototuzuoquan/article/details/39066899