C 設計模式程式設計之抽象工廠模式新解 2

2021-04-02 09:48:35 字數 1968 閱讀 6093

抽象工廠之新解

虛擬案例

中國企業需要一項簡單的財務計算:每月月底,財務人員要計算員工的工資。

員工的工資 = (基本工資 + 獎金 - 個人所得稅)。這是乙個放之四海皆準的運算法則。

為了簡化系統,我們假設員工基本工資總是4000美金。

中國企業獎金和個人所得稅的計算規則是:

獎金 = 基本工資(4000) * 10%

個人所得稅 = (基本工資 + 獎金) * 40%

我們現在要為此構建乙個軟體系統(代號叫softo),滿足中國企業的需求。

案例分析

獎金(bonus)、個人所得稅(tax)的計算是softo系統的業務規則(service)。

工資的計算(calculator)則呼叫業務規則(service)來計算員工的實際工資。

工資的計算作為業務規則的前端(或者客戶端client)將提供給最終使用該系統的使用者(財務人員)使用。

針對中國企業為系統建模

根據上面的分析,為softo系統建模如下:

則業務規則service類的**如下:

1using system;

2 3namespace chinesesalary

4 12}

1using system;

2 3namespace chinesesalary

4 14 }

15}

16客戶端的呼叫**:

1using system;

2 3namespace chinesesalary

4 14 }

15}

16執行程式,輸入的結果如下:

chinese salary is:2640

針對美國企業為系統建模

為了拓展國際市場,我們要把該系統移植給美國公司使用。 美國企業的工資計算同樣是: 員工的工資 = 基本工資 + 獎金 - 個人所得稅。

但是他們的獎金和個人所得稅的計算規則不同於中國企業:

美國企業獎金和個人所得稅的計算規則是:

獎金 = 基本工資 * 15 %

個人所得稅 = (基本工資 * 5% + 獎金 * 25%)

根據前面為中國企業建模經驗,我們僅僅將chinesetax、chinesebonus修改為americantax、americanbonus。 修改後的模型如下:

則業務規則service類的**如下:

1using system;

2 3namespace americansalary

4 12}

13 1using system;

2 3namespace americansalary

4 14 }

15}

16 1using system;

2 3namespace americansalary

4 14 }

15}

16客戶端的呼叫**:

1

2using system;

3 4namespace americansalary

5 24 }

25}

26執行程式,輸入的結果如下:

american salary is:2640

C 設計模式程式設計之抽象工廠模式新解

概述 在軟體系統中,經常面臨著 一系列相互依賴的物件 的建立工作 同時由於需求的變化,往往存在著更多系列物件的建立工作。如何應對這種變化?如何繞過常規的物件的建立方法 new 提供一種 封裝機制 來避免客戶程式和這種 多系列具體物件建立工作 的緊耦合?這就是我們要說的抽象工廠模式。意圖 提供乙個建立...

C 設計模式程式設計之抽象工廠模式新解

在軟體系統中,經常面臨著 一系列相互依賴的物件 的建立工作 同時由於需求的變化,往往存在著更多系列物件的建立工作。如何應對這種變化?如何繞過常規的物件的建立方法 new 提供一種 封裝機制 來避免客戶程式和這種 多系列具體物件建立工作 的緊耦合?這就是我們要說的抽象工廠模式。意圖 提供乙個建立一系列...

C 設計模式程式設計之抽象工廠模式新解 1

概述 在軟體系統中,經常面臨著 一系列相互依賴的物件 的建立工作 同時由於需求的變化,往往存在著更多系列物件的建立工作。如何應對這種變化?如何繞過常規的物件的建立方法 new 提供一種 封裝機制 來避免客戶程式和這種 多系列具體物件建立工作 的緊耦合?這就是我們要說的抽象工廠模式。意圖 提供乙個建立...