`
yuwenlin2008
  • 浏览: 128719 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

策略模式

阅读更多

策略模式,定义了统一的服务接口,封装了不同的实现,对外提供统一的上下文接口,隐藏具体实现。

通俗讲就是:相同的功能,不同的规则、算法实现,就可以用策略模式。

比如支付功能,系统提供阿里支付,微信支付,银联支付,都是支付功能,不同的实现接口,下面来模拟一下策略模式的实现。

/**
 * 策略接口定义
 */
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>

  • 大小: 13.9 KB
0
0
分享到:
评论

相关推荐

    策略模式结合模板方法模式

    策略模式结合模板方法模式的设计思路 策略模式结合模板方法模式是策略模式的一种变形,目的是为了解决策略模式中的一些共性问题。在策略模式中,经常会出现这样一种情况,就是发现这一系列算法的实现上存在公共功能...

    详解SpringBoot结合策略模式实战套路

    SpringBoot结合策略模式实战套路 策略模式是一种常用的设计模式,它可以使我们的代码更加灵活、可维护和可扩展。在SpringBoot项目中,策略模式可以与依赖注入机制相结合,实现更加灵活的业务逻辑处理。在本文中,...

    桥接模式和策略模式的区别,内含可运行代码和两者详细区别

    桥接模式和策略模式是软件设计模式中的两种重要模式,它们在实现上有着相似之处,但各自的应用场景和设计理念有所不同。下面将详细阐述这两种模式的特点、区别以及它们在实际编程中的应用。 首先,桥接模式(Bridge...

    设计模式之策略模式 鸭子问题

    设计模式之策略模式 鸭子问题 策略模式是一种经典的设计模式,通过鸭子问题,可以让学习者更好地了解设计模式的概念和实现。策略模式的主要思想是定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换。...

    策略模式在实际项目中的应用二

    策略模式是一种行为设计模式,它使你能在运行时改变对象的行为。在Java中,策略模式通过定义一系列的算法,并将每一个算法封装起来,使它们可以相互替换,让算法独立于使用它的客户而变化。这种模式通常用于处理多种...

    Spring下使用策略模式

    在Spring框架中,策略模式是一种常见的设计模式,它允许我们定义一组可互换的策略,这些策略可以在运行时根据需求动态选择。这篇文章将深入探讨如何在Spring中运用策略模式,并结合源码分析其工作原理。 策略模式的...

Global site tag (gtag.js) - Google Analytics