設計模式之策略模式

2021-08-02 18:06:03 字數 599 閱讀 5399

在現實生活中,中國的所得稅,分為企業所得稅、外商投資企業或外商企業所得稅和個人所得稅,針對於這3種所得稅,每種所計算的方式不同,個人所得稅有個人所得稅的計算方式,而企業所得稅有其對應計算方式。如果不採用策略模式來實現這樣乙個需求的話,我們會定義乙個所得稅類,該類有乙個屬性來標識所得稅的型別,並且有乙個計算稅收的calculatetax()方法,在該方法體內需要對稅收型別進行判斷,通過if-else語句來針對不同的稅收型別來計算其所得稅。這樣的實現確實可以解決這個場景,但是這樣的設計不利於擴充套件,如果系統後期需要增加一種所得稅時,此時不得不回去修改calculatetax方法來多新增乙個判斷語句,這樣明白違背了「開放——封閉」原則。此時,我們可以考慮使用策略模式來解決這個問題,既然稅收方法是這個場景中的變化部分,此時自然可以想到對稅收方法進行抽象,這也是策略模式實現的精髓所在。

策略模式是對演算法的包裝,是把使用演算法的責任和演算法本身分割開,委派給不同的物件負責。策略模式通常把一系列的演算法包裝到一系列的策略類裡面。用一句話慨括策略模式就是——「將每個演算法封裝到不同的策略類中,使得它們可以互換」。下面是策略模式的結構圖:

設計模式之策略模式

include using namespace std 飛行行為介面類 class flystrategy 高空飛行行為具現類 class heightfly public flystrategy virtual void fly private heightfly 低空飛行行為具現類 class ...

設計模式之 策略模式

策略模式 strategy pattern 定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。策略模式是一種定義了一系列演算法的方法,從概念上來看,所以得這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各...

設計模式之策略模式

何為策略,就是可以實現目標的方案集合。而完成一項任務有不同的方式,每一種方式稱為乙個策略。策略模式就是定義一系列演算法,將每乙個演算法封裝起來,並讓他們可以相互替換。很簡單的乙個例子 年底移動公司推出很多的活動,比如說 存話費贈食用油,交話費贈話費,買手機贈話費 等等。推出這些個活動目的就只有乙個,...