当前位置:实例文章 » JAVA Web实例» [文章]JAVA笔记 | 快速理解策略模式且使用

JAVA笔记 | 快速理解策略模式且使用

发布人:shili8 发布时间:2024-11-16 21:06 阅读次数:0

**JAVA笔记 | 快速理解策略模式且使用**

**什么是策略模式?**

策略模式是一种行为设计模式,它定义了一个算法家族,分别封装在不同的策略类中,使得可以动态地切换这些算法之间。

**为什么需要策略模式?**

在实际开发过程中,我们经常会遇到这样的问题:某个类的行为取决于某些条件,这些条件可能会改变。例如,我们有一个类,用于计算不同类型的折扣价格。但是,如果我们每次都要修改这个类来适应不同的折扣算法,那么就会变得非常麻烦。

**策略模式的优点**

1. **降低了类之间的耦合度**:策略模式使得类之间的依赖关系变少,提高了系统的灵活性和扩展性。
2. **增加了代码的重用率**:策略模式可以将相同类型的算法封装在不同的策略类中,使得这些算法可以被多次使用。
3. **使得系统更容易维护**:当需要修改某个算法时,只需修改相应的策略类即可,不会影响到其他部分的代码。

**策略模式的结构**

1. **Context类**:该类负责调用不同的策略类来执行具体的操作。
2. **Strategy接口**:该接口定义了所有可能被使用的算法的共同方法。
3. **ConcreteStrategy类**:该类实现了Strategy接口,封装了具体的算法。

**示例代码**

java// Strategy接口public interface DiscountStrategy {
 double calculateDiscount(double price);
}

// ConcreteStrategy类:满减策略public class FullReductionStrategy implements DiscountStrategy {
 @Override public double calculateDiscount(double price) {
 // 满减策略的具体实现 return price *0.8;
 }
}

// ConcreteStrategy类:打折策略public class DiscountStrategy implements DiscountStrategy {
 @Override public double calculateDiscount(double price) {
 // 打折策略的具体实现 return price *0.9;
 }
}

// Context类public class PriceCalculator {
 private DiscountStrategy strategy;

 public PriceCalculator(DiscountStrategy strategy) {
 this.strategy = strategy;
 }

 public double calculatePrice(double price) {
 return strategy.calculateDiscount(price);
 }

 public static void main(String[] args) {
 // 使用满减策略 PriceCalculator calculator1 = new PriceCalculator(new FullReductionStrategy());
 System.out.println("满减价格:" + calculator1.calculatePrice(100));

 // 使用打折策略 PriceCalculator calculator2 = new PriceCalculator(new DiscountStrategy());
 System.out.println("打折价格:" + calculator2.calculatePrice(100));
 }
}


**总结**

策略模式是一种非常有用的设计模式,它使得我们可以将相同类型的算法封装在不同的策略类中,使得这些算法可以被多次使用。通过使用策略模式,我们可以降低类之间的耦合度,增加代码的重用率,并且使得系统更容易维护。

**参考**

* 《设计模式:可复用面向对象软件的基础》
* 《Java设计模式与实现》

其他信息

其他资源

Top