策略模式 博客分类: Java设计模式 java设计模式
程序员文章站
2024-03-16 14:59:34
...
策略模式,定义了统一的服务接口,封装了不同的实现,对外提供统一的上下文接口,隐藏具体实现。
通俗讲就是:相同的功能,不同的规则、算法实现,就可以用策略模式。
比如支付功能,系统提供阿里支付,微信支付,银联支付,都是支付功能,不同的实现接口,下面来模拟一下策略模式的实现。
/** * 策略接口定义 */ 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>
推荐阅读
-
模板方法模式 博客分类: Java设计模式 java设计模式
-
模板方法模式 博客分类: Java设计模式 java设计模式
-
单例模式 博客分类: Java设计模式 Java设计模式
-
策略模式 博客分类: Java设计模式 java设计模式
-
设计模式之工厂方法模式一 博客分类: 设计模式 设计模式工厂模式
-
框架设计之注解 博客分类: 架构 框架java工作企业应用
-
设计模式之单例模式三(更好的实现方式) 博客分类: 设计模式 设计模式单例模式
-
设计模式之单例模式三(更好的实现方式) 博客分类: 设计模式 设计模式单例模式
-
框架设计之注解 博客分类: 架构 框架java工作企业应用
-
java 23种设计模式,一般情况下,常用的有哪些? 转载