Strategy學習筆記

2021-08-26 04:23:03 字數 1314 閱讀 4320

首先看一下策略模式的uml圖

strategy通常是乙個介面,其中定義抽象的演算法介面,具體實現具體策略子類(concretestrategy)來實現。

context定義了對策略類的演算法方法的呼叫以完成具體的邏輯,context對strategy類的呼叫不管是如何實現的,只要可以完成功能即可。

concretestrategy完成策略介面中定義的方法,不同的實現子類對strategy抽象層的實現也不相同。

乙個簡單的例子,乙個商場中可以有不同的購物區,每個區域在不同的時節和情況下會有相應的折扣

首先建立乙個抽象market類包含購物區的一些基本屬性和方法

package com.akwolf.strategymarket; public abstract class market /** * 各個商場用來結算最終金額的方法 * * @param price 商品總價 * @return */ public abstract float calculateprice(float price); public onsale getonsale() public void setonsale(onsale onsale) }

讓不同的購物區實現market以實現乙個簡單的從原始價得到打折後**的功能

package com.akwolf.strategymarket; public class clothesmarket extends market }

foodmarket:

package com.akwolf.strategymarket; public class foodmarket extends market }

建立打折的介面(onsale)相當於stratety介面,供不同的打折型別拓展,因為打折的型別可能很多,也具有不確定性

package com.akwolf.strategymarket; public inte***ce onsale

剩下就是讓不同的打折型別拓展自打折介面,以便在不同的購物區被使用

package com.akwolf.strategymarket; /** * 秋季打折 * * @author zhanghua * */ public class onsaleautumn implements onsale }package com.akwolf.strategymarket; /** * 春節打折 * * @author zhanghua * */ public class onsalespring implements onsale }

建立乙個類測試一些執行效果

package com.akwolf.strategymarket; public class maintest }

Strategy學習筆記

首先看一下策略模式的uml圖 strategy通常是乙個介面,其中定義抽象的演算法介面,具體實現具體策略子類 concretestrategy 來實現。context定義了對策略類的演算法方法的呼叫以完成具體的邏輯,context對strategy類的呼叫不管是如何實現的,只要可以完成功能即可。co...

設計模式學習筆記 策略模式(Strategy)

1.特點 將一系列演算法逐個封裝並可相互替換,易於切換 理解 擴充套件。優點 1 提供了管理相關演算法族的方法。2 可以避免使用多重條件轉移語句。缺點 1 必須知道所有的具體策略類及它們的區別.2 生成許多的策略類。2.概念 3.類圖 4.實現 策略類,定義了所有支援的演算法的公共介面 public...

策略模式 Strategy 行為筆記

一 涉及角色 1 環境角色 context 持有strategy類 抽象演算法類 引用 2 抽象策略 strategy 介面 or 抽象類 3 具體策略 concretestrategy 包裝相關演算法或行為 注意 共用 公共行為 可以 上移到 strategy 抽象類 二 何時 使用 何種 具體策...