总第68篇
假如明天我要去东方明珠玩,我可以坐公交车,也可以乘地铁,还可以骑共享单车,更可以打出租车等等,选择什么样的交通工具不重要,重要的是能够到达目的地,我可以为自己的出行情况制定不同的出行方式和策略。在程序中,这种设计模式称作策略模式。本篇将详细梳理这种模式。
1.策略模式的概念
策略模式(Strategy Pattern)是一种比较简单的模式,也叫做政策模式。它定义一系列算法,将每个算法封装起来,并使它们之间可以互换。
策略模式使算法可以独立于使用它的用户而变化,它使用的是面向对象的继承和多态机制,其通用的类图关系如下所示:
从上面的类图关系可以看出,策略模式包含三个角色:
Context封装角色:起承上启下的封装作用,屏蔽高层模块对策略、算法的直接访问,封装可能存在的变化;
Strategy抽象策略角色:策略、算法的抽象,通常为接口,定义每个策略或算法必须具有的方法和属性;
StrategyA具体策略角色:实现抽象策略中的操作,该类中包含具体的算法。
策略模式是对算法、规