欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 高考 > Java 里的策略模式

Java 里的策略模式

2025/9/15 9:17:41 来源:https://blog.csdn.net/weixin_73355603/article/details/145318340  浏览:    关键词:Java 里的策略模式

目录

一、策略模式是什么

二、策略模式的结构和原理

三、策略模式在 Java 中的代码实现

四、策略模式的优势和应用场景

4.1 优势

4.2 应用场景


 

家人们,今天来聊聊 Java 编程里一个超实用的设计模式 —— 策略模式。这可是提升代码质量和灵活性的关键,掌握它,你的代码就能像变形金刚一样,灵活应对各种需求变化。

一、策略模式是什么

策略模式,简单来说,就是定义了一系列算法,把它们一个个封装起来,并且使它们可以相互替换。这就好比你出门选择交通工具,有走路、骑自行车、坐公交车、打车等多种策略,每种策略都能让你到达目的地,只是方式和效率不同。在编程里,不同的算法就是不同的策略,我们可以根据具体的业务场景选择最合适的算法。

二、策略模式的结构和原理

策略模式主要包含三个角色:

  • 抽象策略角色(Strategy):定义了一个公共接口,所有具体的策略类都要实现这个接口。这个接口就像是一个 “模板”,规定了具体策略类必须具备的方法。
  • 具体策略角色(ConcreteStrategy):实现了抽象策略角色定义的接口,每个具体策略类对应一种具体的算法实现。比如在计算商品折扣时,可能有普通会员折扣策略、VIP 会员折扣策略等,每个策略都是一个具体策略类。
  • 环境角色(Context):持有一个抽象策略类的引用,通过这个引用调用具体策略类的方法。它就像是一个 “指挥官”,决定在什么情况下使用哪种策略。

三、策略模式在 Java 中的代码实现

下面通过一个简单的示例来看看策略模式在 Java 中的实现。假设我们有一个电商系统,需要根据不同的会员等级计算商品的折扣价格。

首先,定义抽象策略接口:

// 折扣策略接口
public interface DiscountStrategy {double calculateDiscount(double originalPrice);
}

然后,实现具体策略类:

// 普通会员折扣策略
public class NormalMemberDiscountStrategy implements DiscountStrategy {@Overridepublic double calculateDiscount(double originalPrice) {// 普通会员打9折return originalPrice * 0.9;}
}// VIP会员折扣策略
public class VIPMemberDiscountStrategy implements DiscountStrategy {@Overridepublic double calculateDiscount(double originalPrice) {// VIP会员打8折return originalPrice * 0.8;}
}

最后,定义环境角色类:

// 购物车类,持有折扣策略的引用
public class ShoppingCart {private DiscountStrategy discountStrategy;public ShoppingCart(DiscountStrategy discountStrategy) {this.discountStrategy = discountStrategy;}public double calculateTotalPrice(double originalPrice) {return discountStrategy.calculateDiscount(originalPrice);}
}

使用策略模式的客户端代码:

public class Client {public static void main(String[] args) {// 使用普通会员折扣策略DiscountStrategy normalStrategy = new NormalMemberDiscountStrategy();ShoppingCart normalCart = new ShoppingCart(normalStrategy);double normalTotalPrice = normalCart.calculateTotalPrice(100);System.out.println("普通会员的总价格: " + normalTotalPrice);// 使用VIP会员折扣策略DiscountStrategy vipStrategy = new VIPMemberDiscountStrategy();ShoppingCart vipCart = new ShoppingCart(vipStrategy);double vipTotalPrice = vipCart.calculateTotalPrice(100);System.out.println("VIP会员的总价格: " + vipTotalPrice);}
}

四、策略模式的优势和应用场景

4.1 优势

  • 可维护性和可扩展性强:当需要添加新的折扣策略时,只需要新增一个具体策略类,实现抽象策略接口即可,不需要修改原有的代码。这就好比你要在交通工具列表里添加一个 “地铁” 策略,只需要单独实现一个 “坐地铁” 的策略类,不会影响到其他的出行策略。
  • 代码复用性高:不同的具体策略类可以复用抽象策略接口的方法定义,提高了代码的复用性。比如在计算折扣价格时,虽然具体的折扣算法不同,但都遵循 “计算折扣价格” 这个统一的接口定义。

4.2 应用场景

  • 算法多样化场景:在图形绘制中,可能有不同的绘制算法,如直线绘制算法、曲线绘制算法等,可以使用策略模式来根据不同的需求选择合适的绘制算法。
  • 业务规则频繁变化场景:在电商系统中,促销活动的规则经常变化,使用策略模式可以方便地切换不同的促销策略,如满减策略、赠品策略等。

家人们,策略模式在 Java 编程里用处可大了,掌握它能让你的代码更优雅、更灵活。要是学习过程中有啥问题,咱们随时交流,一起把这门技术吃透!

版权声明:

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

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

热搜词