23種設計模式(11) 策略模式

2021-08-15 11:26:57 字數 1468 閱讀 8203

定義:定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。

型別:行為類模式

類圖:

策略模式是對演算法的封裝,把一系列的演算法分別封裝到對應的類中,並且這些類實現相同的介面,相互之間可以替換。在前面說過的行為類模式中,有一種模式也是關注對演算法的封裝——模版方法模式。

對照類圖可以看到,策略模式與模版方法模式的區別僅僅是多了乙個單獨的封裝類context,它與模版方法模式的區別在於:在模版方法模式中,呼叫演算法的主體在抽象的父類中,而在策略模式中,呼叫演算法的主體則是封裝到了封裝類context中,抽象策略strategy一般是乙個介面,目的只是為了定義規範,裡面一般不包含邏輯。

其實,這只是通用實現,而在實際程式設計中,因為各個具體策略實現類之間難免存在一些相同的邏輯,為了避免重複的**,我們常常使用抽象類來擔任strategy的角色,在裡面封裝公共的**,因此,在很多應用的場景中,在策略模式中一般會看到模版方法模式的影子。

策略模式的結構

策略模式**實現

inte***ce

istrategy   

class

concretestrategy1

implements

istrategy   

}  class

concretestrategy2

implements

istrategy   

}  class

context   

public

void

execute()  

}  public

class

client   

}

策略模式的優缺點策略模式的主要優點有:

策略模式的缺點主要有兩個:

適用場景

做物件導向設計的,對策略模式一定很熟悉,因為它實質上就是物件導向中的繼承和多型,在看完策略模式的通用**後,我想,即使之前從來沒有聽說過策略模式,在開發過程中也一定使用過它吧?至少在在以下兩種情況下,大家可以考慮使用策略模式:

策略模式是一種簡單常用的模式,我們在進行開發的時候,會經常有意無意地使用它,一般來說,策略模式不會單獨使用,跟模版方法模式、工廠模式等混合使用的情況比較多。

暇之餘鞏固一下自己的知識體系 ,擴充一下自己的知識面。快利用瑣碎時間給自己充電吧   !

23種設計模式 委派模式 策略模式

精簡程式邏輯,便於閱讀 其基本作用是負責任務的排程和分配任務,和 模式很像,可以看做是一種特殊情況下的靜態 的全權 但是 模式注重過程,但是委派模式注重結果。是一種行為型模式。一般delegate,dispatcher結尾的都是委派 老闆叫經理幹活,經理通過不同的內容叫不同的員工去做事情 首先定義介...

23種設計模式之策略模式

定義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。型別 行為類模式 類圖 策略模式是對演算法的封裝,把一系列的演算法分別封裝到對應的類中,並且這些類實現相同的介面,相互之間可以替換。在前面說過的行為類模式中,有一種模式也是關注對演算法的封裝 模版方法模式,對照類圖可以看到,策略模...

23種設計模式之 策略模式

策略模式也叫政策模式,它是將定義的演算法家族,分別封裝起來,讓他們之間可以相互替換,從而讓演算法的變化不會影響到使用演算法的使用者。public inte ce strategy public class contentstrategya implements strategy public cla...