策略模式

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

概述

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

模式的结构

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

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

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

策略模式的优点

  • 上下文和具体策略是松耦合关系
  • 满足“开-闭原则”。当增加新的具体策略时,不需要修改上下文类的代码。
  • 策略模式适用场景

  • 需要使用一个算法的不同变体,比如文件加密和解密
  • 一个类定义了多个行为,并且这些行为在这个类的方法中以多个条件语句的形式给出,可以使用策略模式避免大量的条件语句。
  • 程序不希望暴露复杂的、与算法相关的数据结构
posted @ 2017-04-24 21:22  且听风吟-wuchao  阅读(210)  评论(0编辑  收藏  举报