策略模式之支付案例实战

    策略模式(Strategy)属于对象行为型设计模式,主要是定义一系列的算法,把这些算法一个个封装成拥有共同接口的单独的类,并且使它们之间可以互换。策略模式使这些算法在客户端调用它们的时候能够互不影响地变化。这里的算法不要狭义的理解为数据结构中算法,可以理解为不同的业务处理方法。
这种做法会带来什么样的好处呢?
它将算法的使用和算法本身分离,即将变化的具体算法封装了起来,降低了代码的耦合度,系统业务策略的更变仅需少量修改。
算法被提取出来,这样可以使算法得到重用,这种情况还可以考虑使用享元模式来共享算法对象,来减少系统开销(但要注意使用享元模式的建议条件)。
三、结构
先由定义来想象下它的结构吧:要使算法拥有共同的接口,这样就要实现一个接口或者一个抽象类出来才行。这样基本上轮廓也就出来了,我们来看看:
策略模式由三个角色组成:
1) 算法使用环境(Context)角色:算法被引用到这里和一些其它的与环境有关的操作一起
来完成任务。
2) 抽象策略(Strategy)角色:规定了所有具体策略角色所需的接口。在 java 它通常由接口
或者抽象类来实现。
3) 具体策略(Concrete Strategy)角色:实现了抽象策略角色定义的接口。

支付的代码实现如下:

//策略的执行体(容器)
public class Context {
	private Strategy strategy;

	public Context(Strategy strategy) {
		super();
		this.strategy = strategy;
	}
	//给商店付钱
	public void pay2Store(){
		this.strategy.pay();
	}
}

public class MainClass {
	public static void main(String[] args) {
		
		Context context=new Context(new ZhiFuBaoStrategy());
		context.pay2Store();
		
	}
}

public interface Strategy {
	//支付方法
	public void pay();
}
/**
 * 微信策略
 * @author Administrator
 *
 */
public class WeiXinStrategy implements Strategy{

	public void pay() {
		System.out.println("采用微信支付");
	}

}
/**
 * 支付宝支付策略
 * @author Administrator
 *
 */
public class ZhiFuBaoStrategy implements Strategy{

	public void pay() {
		System.out.println("采用支付宝支付");
	}

}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值