前言
政策模式:它定義了算法家族,分别封裝起來,讓它們之間可以互相替換,此模式讓算法的變化,不會影響到使用算法的客戶。
政策模式結構圖
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuMDO2EDZkBjZzMjZ4EDNhhDO4kjN5IjMiJzN4EmY1UjYfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
Strategy:政策類,定義所有支援的算法的公共接口
ConcreteStrategy1,ConcreteStrategy2,ConcreteStrategy3這三個是具體政策類,封裝了具體的算法或行為,繼承于Strategy
Context上下文,用一個ConcreteStrategy來配置,維護一個對Strategy對象的引用。
代碼實作
簡單了解了一下,政策模式的定義和它的模式結構圖之後,我們現在通過代碼進行進一步的了解。
Strategy類,定義所有支援的算法的公共接口
ConcreteStrategy,封裝了具體的算法或行為,繼承于Strategy
Context,用一個ConcreteStrategy來配置,維護一個對Strategy對象的引用。
用戶端調用代碼
運作效果展示
總結
政策模式是一種定義一系列算法的方法,從概念上來看,所有這些算法完成的都是相同的工作,隻是實作不同,它可以以相同的方式調用所有的算法,減少了各種算法類與使用算法類之間的耦合。
政策模式的優點:
政策模式的Strategy類層次為Context定義了一系列可供重用的算法或行為。繼承有助于析取出這些算法的公共功能。
簡化了單元測試,因為每個算法都有自己的類,可以通過自己的接口單獨測試。
總的來說,政策模式就是用來封裝算法的,但在實踐中,我們發現可以用它來封裝幾乎任何類型的規則,隻要在分析過程中聽到需要在不同時間應用不同的業務規則,就可以考慮使用政策模式處理這種變化的可能性。