加減乘除的擴充套件設計

2021-09-22 13:59:42 字數 934 閱讀 7660

實現加減運算(注意:以後可能會擴充套件乘除,備註:時間日期型別好像不支援乘除)

加減的操作物件包括(date和datetime按天加減,currency實現減法時不能小於0,percent最大值不超過100,最小值不小於0),如果超出範圍則不執行運算,並返回資訊相應的錯資訊(eg:percent is more than 100% unable to add)

定義乙個計算介面,裡面包含add和subtract

date,datetime,percent,number型別實現這個計算介面,並進行相應的驗證

定義乙個工廠類,用來確定哪個型別的哪個操作符呼叫哪個方法

對於之後新增的乘除操作符,在計算介面裡面新增,multiplication和 division,使用default修飾。

定義乙個計算介面,裡面只有calculation抽象方法

date,datetime,percent,number型別實現這個計算介面,再在每個裡面實現計算策略,相當於使用兩次策略模式。

驗證可以定義乙個result,裡面包含boolean的issuccess和string的message。

計算是單獨乙個模組,驗證是單獨乙個類的共能,功能上解耦

使用策略模式和工廠模式。

高內聚,低耦合。不變的真理,但是到做的時候有很多種方式,就這個例子來說,劃分的時候有多種思路:

根據不同的計算物件分(date,datetime,number,percent,currency)

根據不同的操作符劃分(加減乘除)

驗證和計算要不要分割?

從可擴充套件角度來講,怎麼設計

越來越體會到,寫**的時間佔了一小部分,大部分時間花在了設計和**優化。

具體**會上傳到github 上,週末整理一下

中加減乘除 晉朝成語 加減乘除

讀 音 ji ji n ch ng ch 釋 義 算術的四則運算,借指事物的消長變化。出 自 明 王九思 端正好 次韻贈邵晉夫歸隱 端的是太平人物,誰想道命兒中加減乘除。例句1.他們的第一台機器可以加減乘除。2.通過教她不同的錢的面額幫你的孩子學會加減乘除。3.阿拉巴馬州和密西西比州有差不多一半的孩...

sql的加減乘除運算 mongo 加減乘除運算

mongo語法的四則運算符號 加法 add 減法 subtract 乘法 multiply 除法 divide 求模 mod 以除法為例 其餘同 資料庫course表存在一條 id 為 5ab4dfcabeb21f77cf7dbdf3 的資料,delete欄位為2,total欄位為12,求該條資料的...

C BigInterger 加減乘除

c biginterger 加減乘除 include include include include include using namespace std class dividedbyzeroexception class biginteger biginteger.cpp const bigi...