设计模式之策略模式 浏览次数:151 日期:2020-07-23 13:23:51 ### 定义 策略模式定义了一系列的算法,并将每一个算法封装起来,使每个算法可以相互替代。注意是可以**互相替代** 举个例子,我们每天上班,可以步行上班,可以坐公交上班,可以打车上班,也可以自己开车上班,但是因为环境的不同我们会选择不同的出行方式,公司就在家门口我们可能选择步行,没在家门口上班快要迟到了我们可能打车,每一个出行方式都能实现我们的目的,但是可能环境的变化我们会选择不同的方式。策略模式也是如此,可以根据动态变化选择不同的策略,但是每一个策略最终都会实现我们的目的,只是可能不是最优策略而已。 ### 代码实例 ```php workStrategy = $workStrategy; } //出行方式 public function travelMethod() { $this->workStrategy->handle(); } } ``` 模拟根据路途不同选择不同的策略: ```php $miles = 12000; if($miles<2000) {//短途,步行 $strategy = new WalkStrategy; } else {//骑车 $strategy = new BicycleStrategy; } $person = new Person($strategy); $person->travelMethod(); ``` ### 优点 - 算法可以自由切换 - 扩展性良好,增加一个策略只需实现接口即可 - 避免使用多重条件判断(如果不用策略模式我们可能会使用多重条件语句,不利于维护) 最后更新时间为: 5个月前 (2020-07-23 13:23:51)