策略模式

策略模式

定义:策略模式的基本含义是针对一组算法或者行为特征,将它们抽象到具有公共接口函数的独立抽象类或者接口中,从而使它们可以相互替换。这样就使得某一个特定的接口行为可以在不影响客户端的情况下发生变化


uml图

策略模式不能严格称之为一种设计模式,因为它仅仅是一个接口的多个实现在运行期的选择性替换而已。我们可以从图中归纳出策略模式所涉及的主要角色:

  • 环境(Context)角色——持有一个Strategy类的引用,将决定调用哪种Strategy角色完成业务逻辑

  • 抽象策略(Strategy)角色——这是一个抽象的策略角色,由一个接口或者抽象类来扮演这个角色。这个角色是策略模式的核心,它是所有策略算法的核心归纳。因而对外表现为一个一致的接口函数

  • 具体策略(ConcreteStrategy)角色——封装了具体的策略算法或行为。

策略模式的核心是对算法的包装,其最终目的是把使用算法的责任(环境)和算法的实现进行解耦。


策略算法的两大核心:

  • 抽象:指的是对所有核心算法的行为接口的抽象统一

  • 选择:指的是在运行期不同的算法实现之间进行选择

优势:

  • 策略模式提供了管理一组算法族的方法——通过接口和多个算法实现之间的契约接口来完成业务场景

  • 策略模式提供了可以替换通过继承进行对象行为扩展的方法——使用公共抽象接口的不同实现类而并非一个抽象类的继承链完成行为的扩展

  • 策略模式提供了将算法的调用责任与算法逻辑进行解耦的方法——通过角色转移,将调用环境角色(Context)与算法抽象(Strategy)之间分开,形成引用关系


参考:整理归纳自《struts2技术内幕——深入解析struts2架构设计与实现原理》

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值