设计模式-策略模式

一.策略模式定义:

  策略模式(Strategy Pattern)定义了一组策略,分别在不同类中封装起来,每种策略都可以根据当前场景相互替换,从而使策略的变化可以独立于操作者。比如我们要去某个地方,会根据距离的不同(或者是根据手头经济状况)来选择不同的出行方式(步行、共享单车、公交、打车等等),这些出行方式即不同的策略。

二.什么情况下使用策略模式

  当代码的中if…else… 超过3个以后,并且每个if…else…里的逻辑代码都比较多,这块的需求容易变更时考虑使用策略模式进行优化,多层if…else…违背了面对对象的2个基本原则(1.单一职责原则,一个类应该只发生一个变化,后期每个逻辑的变动都是对当前类的修改;2.开闭原则,对扩展开放,对修改关闭,如果此时修改某个逻辑或者是增加新的逻辑势必都要对原来的类进行修改),尤其是当 if-else 块中的代码量比较大时,后续代码的扩展和维护就会逐渐变得非常困难且容易出错。

三.使用策略模式的背景

  商城系统中的订单结算,最开始的时候可能是单一的结算方式。随着业务发展可能出现了多种结算方式,每次增加一种结算方式都要对现在有代码进行一次更改,后期可能还有新的结算方式出现,以下几种是比较常见的几个方式

    普通没有折扣结算

    优惠券结算

    满减结算

四.定义策略接口

  首先定义一个策略接口,接口包含两个方法,一个方法获取策略名称,一个方法执行策略逻辑。


/**
 * 
 * @author Administrator
 *
 */
public interface StrategyHandler {

	/**
	 * 获取策略名称
	 * @return
	 */
	String getStrategy();
	
	/**
	 * 策略处理逻辑
	 */
	void handler(StrategyRequest request);
}

  这个是接口请求参数,其中strategyName是获取具体策略的策略名称

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值