設計模式系列 策略模式

2021-07-03 17:42:13 字數 1267 閱讀 7819

設計模式一共分為三大類:

建立型模式(5種):單例模式,工廠模式(包含簡單工廠),抽象工廠模式,建造者模式、原型模式

結構型模式(7種):介面卡模式、裝飾器模式、**模式、外觀模式、橋接模式、組合模式、享元模式

行為性模式(11種):策略模式、模板方法模式、觀察者模式、迭代器模式、責任鏈模式、命令模式、備忘錄模式、狀態模式、訪問者模式、中介者模式、直譯器模式

下面介紹一下行為型模式中的策略模式

使用場景:假如有一組操作有多個實現方法,這些方法可能在不同的場景中切換,我們可以通過if來判斷在什麼情況下呼叫哪個實現的方法。但是,這樣的耦合性較大,如果再增加乙個實現方法,還需要去改原來的**在if中增加判斷。這種情況下,我們可以使用策略模式。把每個方法封裝在乙個具體的策略裡面,然後這些策略都實現了抽象策略介面。再提供乙個使用策略的環境context,它持有乙個策略的例項引用,提供乙個構造方法,根據傳入不同的策略呼叫不同的方法。

實現方法:

抽象策略 istrategy :

public

inte***ce istrategy

具體策略1:

public

class

concretestrategy1

implements

istrategy

}

具體策略2:

public

class

concretestrategy2

implements

istrategy

}

封裝策略的類–上下文:

public

class context

public

void

dosomething()

}

測試類:更換策略只需傳入乙個新的策略即可,不用修改原**

public

class test

}

執行結果:

我是策略1

我是策略2

PHP設計模式系列 策略模式

策略模式設計幫助構建的物件不必自身包含邏輯,而是能夠根據需要利用其他物件中的演算法。例如有乙個cd類,我們類儲存了cd的資訊。原先的時候,我們在cd類中直接呼叫getcd方法給出xml的結果 隨著業務擴充套件,需求方提出需要json資料格式輸出 這個時候我們引進了策略模式,可以讓使用方根據需求自由選...

設計模式系列之 策略模式

一 策略模式的概念 策略模式定義 定義一組演算法,將每個演算法都封裝起來,並且使它們之間可以互換。使用的場景 角色介紹 二 案列實現 小y最近在玩比較有情懷的經典遊戲魂斗羅.歸來,看著熟悉的場景,心裡感慨萬分,以前只是想著怎麼樣才能開掛式地打爆機,現在玩起來更多的是回味經典和享受運用不同的策略闖過不...

設計模式系列之 策略模式

一 策略模式的概念 策略模式定義 定義一組演算法,將每個演算法都封裝起來,並且使它們之間可以互換。使用的場景 角色介紹 策略模式通用uml 二 案列實現 小y最近在玩比較有情懷的經典遊戲魂斗羅.歸來,看著熟悉的場景,心裡感慨萬分,以前只是想著怎麼樣才能開掛式地打爆機,現在玩起來更多的是回味經典和享受...