Welcome

首页 / 软件开发 / 数据结构与算法 / 解读设计模式:策略模式(Strategy Pattern)

解读设计模式:策略模式(Strategy Pattern)2012-01-09 博客园 Bēniaǒ一、模式概述

策略模式(Strategy Pattern)在外形上与状态模式很相似,但在意图上有些不同。其意图是使这些算法可以相互替换,并提供一种方法来选择最合适的算法。

在我应用OOP的设计过程演化(三)这篇文章里应用到了策略模式,在图书的租金计算上分多种情况,每一种不同类型的图书的租金是不一样的,而站在用户的角度来看,不同类型用户的租金收取又是不一样的,见下面分析:

计算机类图书:会员租借打5折,普通顾客租借打6折。

小说类图书:会员租借打6折,普通顾客租借打8折。

生活类图书:会员租借打9折,普通顾客租借打9折。

从上面分析可知,在租金计算这块是非常复杂的,由于有这样复杂的折扣算法,使得价格计算问题需要系统地解决。

书店经营一段时间后发现生活类的图书出租量很小,或许是因为租金的原因,很少有人来租借,于是老板决定降低租金,将生活类图书的租金按照计算机类的租金价格收取。这个时候怎么办?是不是已经有现存的计算机类图书租金计算策略,此时我们只需要把生活来图书的租金计算策略换为计算机类图书的租金计算策略便OK。通过这样的分析,策略模式(Strategy)正是解决这样的问题的模式,它的定义:"准备一组算法,并将每一个算法封装起来,使得它们可以互换。"

二、模式定义

定义:"准备一组算法,并将每一个算法封装起来,使得它们可以互换。"

三、模式意图

策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。