Strategy學習筆記

2021-05-27 22:20:38 字數 1625 閱讀 7105

首先看一下策略模式的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 抽象類 二 何時 使用 何種 具體策...