JAVA演算法策略模式之商品打折 滿x送x

2021-08-01 03:31:32 字數 1519 閱讀 2820

場景:某超市收銀台,營業員根據客戶購買的商品和數量向客戶收費.

問題:超市某段時間會有打折活動(例如打8折),滿***元送***元活動,滿***元送***積分活動等等.

演算法類,可能是打折,滿xx送xx等等

package com.hebo.test.designmode.strategy;

public abstract class strategy

打折演算法實現

package com.hebo.test.designmode.strategy;

/** * 模擬打折類

* @author hebo

* */

public class concretestrategya extends strategy

}

模擬滿xx送xx元活動

package com.hebo.test.designmode.strategy;

/** * 模擬滿xx送xx元活動

* @author hebo

* */

public class concretestrategyb extends strategy

}

模擬滿xx元送xx積分

package com.hebo.test.designmode.strategy;

/** * 模擬滿xx元送xx積分

* @author hebo

* */

public class concretestrategyc extends strategy

}

上下文

package com.hebo.test.designmode.strategy;

public class context

if(type.equals("滿就送"))

if(type.equals("送積分")) }

//不使用工廠模式的建構函式

public context(strategy strategy)

//上下文介面

public void contextinte***ce()

}

測試類

package com.hebo.test.designmode.strategy;

/** * 模擬收銀台

* @author hebo

* */

public class test

}

總結:策略模式是一種定義一系列演算法的方法,從概念上看,所有這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少各種演算法類與使用演算法類之間的耦合。

策略模式的strategy類為context定義了一系列的可供重用的演算法和行為。另外乙個優點是簡化了單元測試,每個演算法都有自己的類,可以通過自己單獨介面進行測試。

策略模式 商品促銷

許多商家為了提高知名度或是其他原因會進行商品 活動。而有時對於新老客戶的 策略又有所不同。比如新客戶打9折,老客戶打8折。當然,這只是比喻 我們可以用簡單的程式來表示這種 活動。public class merchandise 根據型別計算商品 public float calculateprice...

KMP演算法java實現之策略模式

kmp演算法是個經典的演算法,網上很多大神都給出了很詳細的說明,在此不再贅述。下面是kmp演算法的實現,使用的是策略模式。public inte ce inextbuilder編寫inextbuilder介面的遞迴思想實現 package com.soft.kmp public class recu...

java 設計模式之策略模式

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