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