您的位置:首页 > 娱乐 > 明星 > 全网引流推广_工商企业登记查询_搜狗搜索网页版_游戏广告联盟平台

全网引流推广_工商企业登记查询_搜狗搜索网页版_游戏广告联盟平台

2024/12/22 13:44:41 来源:https://blog.csdn.net/qq_34207898/article/details/144317773  浏览:    关键词:全网引流推广_工商企业登记查询_搜狗搜索网页版_游戏广告联盟平台
全网引流推广_工商企业登记查询_搜狗搜索网页版_游戏广告联盟平台

策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式通常用来实现一组相关的行为或策略,让客户端可以在运行时选择其中的一个来执行。

 

下面是一个简单的Java代码示例,演示了如何使用策略模式来实现不同的折扣计算方法:

 

### 定义策略接口

 

首先,我们需要定义一个策略接口,该接口声明了一个所有具体策略类必须实现的方法。在这个例子中,我们将定义一个`DiscountStrategy`接口,用于表示折扣计算的策略。

 

```java

public interface DiscountStrategy {

    double applyDiscount(double originalPrice);

}

```

 

### 实现具体的策略

 

接下来,我们为每种折扣策略创建具体的实现类。例如,我们可以有一个固定折扣和一个百分比折扣的实现。

 

```java

// 固定金额折扣策略

public class FixedDiscountStrategy implements DiscountStrategy {

 

    private final double discountAmount;

 

    public FixedDiscountStrategy(double discountAmount) {

        this.discountAmount = discountAmount;

    }

 

    @Override

    public double applyDiscount(double originalPrice) {

        return Math.max(originalPrice - discountAmount, 0); // 确保价格不低于0

    }

}

 

// 百分比折扣策略

public class PercentageDiscountStrategy implements DiscountStrategy {

 

    private final double percentage;

 

    public PercentageDiscountStrategy(double percentage) {

        this.percentage = percentage;

    }

 

    @Override

    public double applyDiscount(double originalPrice) {

        return originalPrice * (1 - percentage / 100);

    }

}

```

 

### 创建上下文类

 

然后,我们需要创建一个上下文类,这个类持有一个对策略对象的引用,并提供一个方法来设置当前使用的策略。此外,它还提供了一个方法来应用选定的策略。

 

```java

public class ShoppingCart {

    private DiscountStrategy discountStrategy;

 

    public void setDiscountStrategy(DiscountStrategy discountStrategy) {

        this.discountStrategy = discountStrategy;

    }

 

    public double calculateTotal(double originalPrice) {

        if (discountStrategy == null) {

            return originalPrice; // 如果没有设置策略,则不打折

        }

        return discountStrategy.applyDiscount(originalPrice);

    }

}

```

 

### 使用策略模式

 

最后,我们可以通过以下方式来使用这些策略:

 

```java

public class Main {

    public static void main(String[] args) {

        ShoppingCart cart = new ShoppingCart();

 

        // 假设商品原价是100元

        double originalPrice = 100.0;

 

        // 应用固定折扣策略

        cart.setDiscountStrategy(new FixedDiscountStrategy(20.0)); // 减去20元

        System.out.println("Fixed discount price: " + cart.calculateTotal(originalPrice));

 

        // 应用百分比折扣策略

        cart.setDiscountStrategy(new PercentageDiscountStrategy(10)); // 打9折

        System.out.println("Percentage discount price: " + cart.calculateTotal(originalPrice));

    }

}

```

 

以上代码展示了如何在Java中实现策略模式。通过这种方式,你可以很容易地添加新的折扣计算方法,而不需要修改现有的代码,从而遵循了开闭原则(对扩展开放,对修改关闭)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com