策略模式的定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
大白话版:通过组合+接口的方式,把功能经常变动的部分从类中抽象出来,使其对用户透明。
例:
设计一个游戏,游戏人物的职业有骑士knight、盗贼thief等,其中骑士使用剑sword和弓arrow,盗贼使用匕首knife和弓arrow。游戏角色同一时间只能使用一种武器,随游戏角色等级的提升将能够使用更多种类的武器(如锤子hammer,针needle等),且角色使用不同武器时战斗方式不同。如何用设计游戏角色的类图?
将Weapon作为一个接口,以组合的方式存在于Character中,其中Weapon中useWeapon函数表明武器的具体使用方式,该函数在实现了Weapon接口的具体武器中实现。setWeapon函数使角色能够随时置换自己的Weapon。通过这种将Weapon作为接口组合入Character中,使武器的使用方式useWeapon独立于Character,让Character通过setWeapon设置相应武器后调用Fight即可使用Weapon的具体功能,而不需要了解所持Weapon具体内部结构的方式,就是策略模式。
策略模式的实际应用:
Android网络通信框架-Volley中对策略模式的典型应用-Request类
原文地址:http://blog.csdn.net/miaoyunzexiaobao/article/details/45482265