设计模式篇之 策略模式 Strategy
目的
策略是一种行为型设计模式,它让你可以定义一系列算法,将每个算法放入一个单独的类中,并使它们的对象可以互换。
问题
有一天,你决定为普通旅行者创建一个导航应用程序。该应用程序以一张精美的地图为中心,帮助用户在任何城市快速定位。
该应用程序最受请求的功能之一是自动路线规划。用户应该能够输入一个地址,并在地图上看到到达该目的地的最快路线。
该应用程序的第一个版本只能在道路上构建路线。开车旅行的人们欣喜若狂。但显然,并不是每个人都喜欢在度假时开车。因此,在下一次更新中,你添加了一个构建步行路线的选项。紧接着,你又添加了一个选项,让人们可以在路线中使用公共交通。
然而,这只是一个开始。后来,你计划为骑自行车的人添加路线构建功能。再后来,你又添加了一个选项,用于构建穿过城市所有旅游景点的路线。

从商业角度来看,该应用程序取得了成功,但技术部分却让你头痛不已。每次你添加一个新的路线算法时,导航器的主要类的大小就会翻倍。在某个时刻,这个怪物变得难以维护。
对其中一个算法的任何更改,无论是简单的错误修复还是对街道评分的轻微调整,都会影响整个类,增加了在已经工作的代码中创建错误的机会。</