大學階段一直沒有好好地學習過設計模式,這是乙個遺憾。
目前只實現了加、減、乘和除四種運算,像書中說的,我們需要考慮以後的擴充套件性,比如以後加上其他的運算等等。
建立了乙個基類: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...