策略
策略,古时也称“计”,指为了达成某个目标而提前策划好的方案。但计划往往不如变化快,当目标突变或者周遭情况不允许实施某方案的时候,我们就得临时变更方案。策略模式(Strategy)强调的是行为的灵活切换,比如一个类的多个方法有着类似的行为接口,可以将它们抽离出来作为一系列策略类,在运行时灵活对接,变更其算法策略,以适应不同的场景。
1 “顽固不化”的系统
一个设计优秀的系统,绝不能来回更改底层代码,而是要站在高层抽象的角度构筑一套相对固化的模式,并能使新加入的代码以实现类的方式接入系统,让系统功能得到无限的算法扩展,以适应用户需求的多样性。
我们先从一个反例开始,了解一个有设计缺陷的系统。流行于20世纪80年代的便携式掌上游戏机的系统设计非常简单,最常见的是“俄罗斯方块”游戏机,这种游戏机只能玩一款游戏,所以玩家逐渐减少,最终退出了市场。这是一种嵌入式系统设计,主机不包含任何操作系统。制造商只是简单地将软件固化在游戏机芯片中,造成游戏(软件)与游戏机(硬件)的强耦合。玩家要想换个游戏就得再购买一台游戏机,严重缺乏可扩展性。
与这种耦合性极高的系统设计类似的还有计算器,它只能用于简单的数学运算,算法功能到此为止,没有后续扩展的可