4.工厂方法模式
1工廠方法模式的核心內(nèi)容是:
A:每種方法通過獨立的類來表示。
B:通過工廠來創(chuàng)建實例化方法
C:理解:帶同一個妹子到不同的地點(麥當勞,肯德基….)去吃飯.
2工廠方法模式的作用:程序訪問不同的工廠,來讓工廠創(chuàng)建自己想要的操作。
3工廠方法模式具體描述
工廠方法模式:核心工廠類不再負責(zé)所有產(chǎn)品的創(chuàng)建,
而是將具體創(chuàng)建的工作交給子類去做,成為一個抽象工廠角色
僅負責(zé)給出具體工廠類必須實現(xiàn)的接口,
而不接觸哪一個產(chǎn)品類應(yīng)當被實例化這種細節(jié)。
?
請MM去麥當勞吃漢堡,不同的MM有不同的口味,
要每個都記住是一件煩人的事情,我一般采用Factory Method模式,
帶著MM到服務(wù)員那兒,說“要一個漢堡”,具體要什么樣的漢堡呢,
讓MM直接跟服務(wù)員說就行了。
4.工廠方法模式類圖
5.代碼:
#include<iostream>
#include <string>
?
using namespace std;
?
//工廠方法模式:核心工廠類不再負責(zé)所有產(chǎn)品的創(chuàng)建,
//而是將具體創(chuàng)建的工作交給子類去做,成為一個抽象工廠角色
//,僅負責(zé)給出具體工廠類必須實現(xiàn)的接口,
//而不接觸哪一個產(chǎn)品類應(yīng)當被實例化這種細節(jié)。
?
//請MM去麥當勞吃漢堡,不同的MM有不同的口味,
//要每個都記住是一件煩人的事情,我一般采用Factory Method模式,
//帶著MM到服務(wù)員那兒,說“要一個漢堡”,具體要什么樣的漢堡呢,
//讓MM直接跟服務(wù)員說就行了。
?
//操作類
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;
}
運行結(jié)果如下:
891
總結(jié)
- 上一篇: 社保生育险报销条件 福利待遇及需满足条件
- 下一篇: 5.简单工厂模式