簡單的工廠模式

2021-06-13 11:17:24 字數 2254 閱讀 1499

大學階段一直沒有好好地學習過設計模式,這是乙個遺憾。

目前只實現了加、減、乘和除四種運算,像書中說的,我們需要考慮以後的擴充套件性,比如以後加上其他的運算等等。

建立了乙個基類:operation,然後派生出四個類(加減乘除):operationadd、operationsub、operationmul、operationdiv。如果以後要加入其他運算方法,同樣直接繼承基類operation就行。

operation.h

#pragma once

class operation

;

operationadd.h

#pragma once

#include "operation.h"

class operationadd :

public operation

;

operationdiv.h

#pragma once

#include "operation.h"

#include "exceptionnum.h"

class operationdiv :

public operation

;

operationdiv.cpp

#include "stdafx.h"

#include "operationdiv.h"

operationdiv::operationdiv(void)

operationdiv::~operationdiv(void)

double operationdiv::getresult()

return numblea / numbleb;

}

其餘的省略。在operationdiv類的成員函式中,加入了異常判斷,因為這裡的除數不能為0.

建立了工廠類operationfactory用來產生各種型別運算方法的物件。

operationfactory.h

#pragma once

#include "operation.h"

class operationfactory

;

operationfactory.cpp

#include "stdafx.h"

#include "operationfactory.h"

#include "operationadd.h"

#include "operationdiv.h"

#include "operationmul.h"

#include "operationsub.h"

#include "exceptionnum.h"

operationfactory::operationfactory(void)

operationfactory::~operationfactory(void)

operation* operationfactory::createoperation(char operate)

return operation;

}

這裡同樣加入了異常判斷,因為如果目前輸入的運算符號不正確,需要進行異常丟擲。

以下是測試**:

// designpattern.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include #include "operation.h"

#include "operationfactory.h"

#include "exceptionnum.h"

using std::cin;

using std::cout;

using std::endl;

int _tmain(int argc, _tchar* argv)

catch(exceptionnum en)

}getchar();

getchar();

return 0;

}

以上就是簡單的實現。

我所理解的工廠模式就是指當需要擴充套件類似的方法時,比如擴充套件計算器的運算啦,資料庫的遷移時帶來的資料處理的類的替換啦,跨平台啦等等之類的,都需要提前用工廠模式進行設計,然後在擴充套件到哦時候就十分的省力氣,只需要改動工廠就行了,而不必大動干戈的改動上層**。

工廠模式 簡單工廠

簡單工廠其實並不是乙個設計模式,反而比較像一種程式設計習慣。我個人的這樣總結簡單工廠 建立乙個類,封裝建立物件的 故事 現在我要開一家披薩店,叫bbk 必敗客 披薩,賣很多種披薩 芝士披薩 榴蓮披薩等等,我有乙個orderpizza string type 方法,根據客戶傳來的type來提供不同的披...

工廠模式 簡單工廠

工廠 處理建立物件的細節。目的 將例項化具體類的 從應用中抽離,或者封裝起來,可以避免干擾應用的其他部分。簡單工廠 簡單工廠其實不是乙個設計模式,反而像一種程式設計習慣。產品實現 desc 產品a public inte ce a class a1 implements a override pub...

簡單工廠模式,工廠模式,抽象工廠模式

三種模式看了一天,記錄下自己的理解 headfirst,比薩店為例 1,簡單工廠模式 乙個具體的工廠類 pizzafactory 乙個抽象的產品類pizza,可以派生出多個具體的產品類 客戶 pizzastore類 工廠類 pizzafactory類關聯產品類pizza,工廠生產出不同型別的pizz...