策略模式:定义一组算法,将每一种算法封装起来,实现统一接口,使每种算法可以灵活替换。
策略模式是行为模式中很好理解的一种模式,类图也很简单,有些像面向接口编程。不过策略模式的最终本意可不是面向接口编程,也不是spring的IOC,它是想各种实现能够灵活替换,而且各算法实现的最终目标是一样的,脱离了这种本意的面向接口编程不应该叫策略模式。
比如压缩算法接口,有zip、rar两种实现,这是策略模式
以下例子就不能认为是策略模式:
网上下单、取消订单、修改订单,后台处理这些请求都需要校验参数-->处理请求->返回结果,流程都一样,所以定义一个统一接口,接口中有三个方法:校验、处理、返回结果组装,接口有三个实现类:CreateOrderImpl,CancelOrderImpl,ModifyOrderImpl。 Controller层根据请求使用不同的实现类。
类图和策略模式一样,但其实不能定义为策略模式,因为各个实现类之间是不能替换的,替换了业务逻辑就变了。顶多可以算上改造成“模板模式+面向接口编程”。
如有不对欢迎各位拍砖,不吝赐教!