首页 > 代码库 > 策略模式

策略模式

定义一系列算法,把它们一个个封装起来,并且它们可相互替换。本模式使得算法可独立于使用它的客户而变化。

概述

比如,设计一个Army类,该类有一个int数组,数组表示士兵的号码,该类中有一个lineUp()方法,该方法用于将士兵按照号码从小到大排列。但有时候需要将士兵按照从大到小排列,此时要么新增一个方法,或者修改该方法。使用策略模式,可以在不修改原来方法的基础上,修改该方法的具体算法。

模式的结构

 策略:策略是一个接口,定义若干个算法标识

具体策略:实现策略接口的类。

上下文:是依赖于策略接口的类,即上下文包含有策略声明的变量。上下文中提供一个方法,该方法委托策略变量调用具体策略所实现的策略接口中的方法。

技术分享

策略模式的优点

上下文和具体策略是松耦合关系

满足“开-闭原则”。当增加新的具体策略时,不需要修改上下文类的代码。

策略模式