我们先来假设一个场景:作为杂货店老板,你还需要根据不同季节或促销活动选择不同的定价策略。比如在淡季时,货物打9折销售。大批量采购时,提供85折优惠。

实际上,这就是策略模式的思想。
// 定义策略接口
interface PricingStrategy {
double calculatePrice(double originalPrice);
}
// 定义具体策略
class SeasonalDiscountStrategy implements PricingStrategy {
@Override
public double calculatePrice(double originalPrice) {
return originalPrice * 0.9; // 10% discount
}
}
class BulkPurchaseDiscountStrategy implements PricingStrategy {
@Override
public double calculatePrice(double originalPrice) {
return originalPrice * 0.85; // 15% discount
}
}
// 上下文
class GroceryStore {
private PricingStrategy pricingStrategy;
public GroceryStore(PricingStrategy strategy) {
this.pricingStrategy = strategy;
}
public double calculateFinalPrice(double originalPrice) {
return pricingStrategy.calculatePrice(originalPrice);
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
PricingStrategy seasonalDiscount = new SeasonalDiscountStrategy();
PricingStrategy bulkPurchaseDiscount = new BulkPurchaseDiscountStrategy();
GroceryStore store = new GroceryStore(seasonalDiscount);
double finalPrice = store.calculateFinalPrice(100.0);
System.out.println("Final price with seasonal discount: " + finalPrice);
store = new GroceryStore(bulkPurchaseDiscount);
finalPrice = store.calculateFinalPrice(10000.0);
System.out.println("Final price with bulk purchase discount: " + finalPrice);
}
}
运行程序,输出如下:
Final price with seasonal discount: 90.0
Final price with bulk purchase discount: 8500.0
好了,本文到这里就结束了,希望认真阅读全文的小伙伴,都能有所收获哦!