Java設計模式之策略模式

2021-09-20 06:41:32 字數 1484 閱讀 8914

概念:用於演算法的自由切換和擴充套件,需要使用策略模式實現演算法的定義和使用分離,從而替換傳統的硬編碼方式。又稱政策模式。

角色包括:

環境類:使用演算法的角色,維護抽象策略類的引用。

抽象策略類:宣告抽象演算法,方便替換演算法。

具體策略類:實現抽象策略類。

實現大致過程

定義乙個策略公有方法介面a,所有不同種類的策略實現這個介面a。再定義乙個環境類,包含介面a這個成員變數,定義乙個方法,用來執行傳入成員變數的方法。
所有策略公有方法類

package com.example.ploydemo;

/** * description

* * 所有策略共有方法類

* @author slliao

* @date 2019/4/29 10:06.

*/public inte***ce gun

策略1實現公有方法介面

package com.example.ploydemo;

/** * description

* * awm實現gun介面

* @author slliao

* @date 2019/4/29 10:07.

*/public class awmgun implements gun

}

策略2實現共有方法介面

package com.example.ploydemo;

/** * description

* *散彈槍實現gun介面

* @author slliao

* @date 2019/4/29 10:08.

*/public class shotgun implements gun

}

定義環境類

package com.example.ploydemo;

/** * description

* * 定義乙個槍的介面

* @author slliao

* @date 2019/4/29 10:10.

*/public class environment

public void run()

public gun getgun()

public void setgun(gun gun)

}

測試

總結優點:可以根據不同情況動態的改變物件的行為。

缺點:情況複雜的情況下需要建立很多的策略類。

客戶端需要知道全部的策略,並且自己決定使用哪種策略。

java 設計模式之策略模式

策略模式非常簡單,也不再舉例子了,它其實就是根據clinet選擇的不同,執行不同的 避免了if.else 和switch case 的不方便和耦合。甚至說你可能平常經常用,只是不知道這是策略模式。類圖 對於擁有公共介面的first,second,third,給clinet提供乙個類context 去...

java設計模式之策略模式

很久沒有更新過設計模式的學習了,最近在看的幾種設計模式在專案實際開發過程中不常用,所以並沒有彙總成部落格寫出來 這一次介紹的是策略模式。策略模式和工廠模式的思想有點類似,都是把物件或資料的獲取封裝起來,需要使用的時候傳入相應的引數獲取相關的物件或資料。工廠模式是對建立物件進行封裝,乙個對操作行為進行...

java設計模式之策略模式

uml設計 定義以及使用場景 定義一系列演算法,將每個演算法單獨封裝,使之可以相互替換,具體方法策略的選擇由客戶端決定,一般適用於多選一的場景。示例 定義乙個介面message,定義兩個類qq wx 都實現了message介面,定義乙個類messagecontroller,訊息控制中心,決定執行me...