策略模式,定义了统一的服务接口,封装了不同的实现,对外提供统一的上下文接口,隐藏具体实现。
通俗讲就是:相同的功能,不同的规则、算法实现,就可以用策略模式。
比如支付功能,系统提供阿里支付,微信支付,银联支付,都是支付功能,不同的实现接口,下面来模拟一下策略模式的实现。
/** * 策略接口定义 */ public abstract class PayStrategy { public static final String ALI_PAY = "Ali"; public static final String WX_PAY = "Wx"; public static final String Up_PAY = "Up"; public abstract void pay(); }
具体实现:
public class AliStrategy extends PayStrategy { @Override public void pay() { System.out.println("支付宝支付"); } }
public class WxStrategy extends PayStrategy { @Override public void pay() { System.out.println("微信支付"); } }
public class UpStrategy extends PayStrategy { @Override public void pay() { System.out.println("银联支付"); } }
/** * Context上下文 */ public class PayContext extends PayStrategy { private PayStrategy strategy; public PayContext(String type) { if (PayStrategy.ALI_PAY.equals(type)) { strategy = new AliStrategy(); } else if (PayStrategy.WX_PAY.equals(type)) { strategy = new WxStrategy(); } else if (PayStrategy.Up_PAY.equals(type)) { strategy = new UpStrategy(); } } @Override public void pay() { strategy.pay(); } }
/** * 测试类 */ public class StrategyTest { public static void main(String[] args) { PayContext context = new PayContext(PayStrategy.ALI_PAY); context.pay(); context = new PayContext(PayStrategy.WX_PAY); context.pay(); } }
执行结果:
支付宝支付 微信支付
以上就是策略模式的简单实现,我们来看下对应的类图:
其实策略模式还是很好理解的,开发中应用也挺多的。
<audio controls="controls" style="display: none;"></audio>
相关推荐
策略模式结合模板方法模式的设计思路 策略模式结合模板方法模式是策略模式的一种变形,目的是为了解决策略模式中的一些共性问题。在策略模式中,经常会出现这样一种情况,就是发现这一系列算法的实现上存在公共功能...
SpringBoot结合策略模式实战套路 策略模式是一种常用的设计模式,它可以使我们的代码更加灵活、可维护和可扩展。在SpringBoot项目中,策略模式可以与依赖注入机制相结合,实现更加灵活的业务逻辑处理。在本文中,...
桥接模式和策略模式是软件设计模式中的两种重要模式,它们在实现上有着相似之处,但各自的应用场景和设计理念有所不同。下面将详细阐述这两种模式的特点、区别以及它们在实际编程中的应用。 首先,桥接模式(Bridge...
设计模式之策略模式 鸭子问题 策略模式是一种经典的设计模式,通过鸭子问题,可以让学习者更好地了解设计模式的概念和实现。策略模式的主要思想是定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。...
策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通过定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换,让算法独立于使用它的客户而变化。这种模式通常用于处理多种...
在Spring框架中,策略模式是一种常见的设计模式,它允许我们定义一组可互换的策略,这些策略可以在运行时根据需求动态选择。这篇文章将深入探讨如何在Spring中运用策略模式,并结合源码分析其工作原理。 策略模式的...