場景:某超市收銀台,營業員根據客戶購買的商品和數量向客戶收費.
問題:超市某段時間會有打折活動(例如打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 去...