策略(Strategy)模式

2021-10-10 00:27:02 字數 1718 閱讀 9905

當實現某乙個功能存在多種演算法或者策略,我們可以根據環境或者條件的不同選擇不同的演算法或者策略來完成該功能,如資料排序策略有氣泡排序、選擇排序、插入排序、二叉樹排序等。

如果使用多重條件轉移語句實現(即硬編碼),不但使條件語句變得很複雜,而且增加、刪除或更換演算法要修改原**,不易維護,違背開閉原則。如果採用策略模式就能很好解決該問題。

策略(strategy)模式的定義:該模式定義了一系列演算法,並將每個演算法封裝起來,使它們可以相互替換,且演算法的變化不會影響使用演算法的客戶。策略模式屬於物件行為模式,它通過對演算法進行封裝,把使用演算法的責任和演算法的實現分割開來,並委派給不同的物件對這些演算法進行管理。

策略模式的主要優點如下。

多重條件語句不易維護,而使用策略模式可以避免使用多重條件語句。

策略模式提供了一系列的可供重用的演算法族,恰當使用繼承可以把演算法族的公共**轉移到父類裡面,從而避免重複的**。

策略模式可以提供相同行為的不同實現,客戶可以根據不同時間或空間要求選擇不同的。

策略模式提供了對開閉原則的完美支援,可以在不修改原**的情況下,靈活增加新演算法。

策略模式把演算法的使用放到環境類中,而演算法的實現移到具體策略類中,實現了二者的分離。

其主要缺點如下。

客戶端必須理解所有策略演算法的區別,以便適時選擇恰當的演算法類。

策略模式造成很多的策略類。

在這個例子中()封裝了乙個演算法。包含物件()可以通過改變策略來改變其行為。

策略 Strategy 模式

strategy 模式也叫策略模式,是由 gof提出的 23種軟體設計模式的一種。strategy 模式是行為模式之一,它對一系列的演算法加以封裝,為所有演算法定義乙個抽象的演算法介面,並通過繼承該抽象演算法介面對所有的演算法加以封裝和實現,具體的演算法選擇交由客戶端決定 策略 strategy 模...

策略模式 Strategy

public context string strategytype df對策略模式的定義是這樣的 它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化不會影響到使用演算法的客戶 main函式 abstract class strategy class concretest...

策略模式 Strategy

定義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。型別 行為類模式 結構圖 策略模式的優缺點 策略模式的主要優點有 策略模式的缺點主要有兩個 必須對客戶端 呼叫者 暴露所有的策略類,因為使用哪種策略是由客戶端來決定的,因此,客戶端應該知道有什麼策略,並且了解各種策略之間的區別,否...