PHP设计模式之:策略模式

策略模式:

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化;

适用场景:

1、多个类只区别在于表现行为不同,可以使用strategy(策略)模式,在操作时动态选择具体要执行的行为(算法、策略);

2、需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现;

3、对客户隐藏具体策略(算法)的实现细节,彼此完全独立;

模式分析:

策略模式与工厂模式均是扩展性好,策略模式主要解决的问题(适用场景):有多种策略可以选择,根据不同的情况选择不同的策略(算法),可以随意的增加策略,而不用去修改使用策略的中间模块。例如:工资计算,各层次计算工资公式(算法)不同,财务部门根据不同层次员工选择不同的计算公式;

代码实现

 

<?php

/1**

 * 策略模式

 */

 

 abstract class SalaryAbs {

  abstract function calculate();

 }

 

/1**

 * 

 * 高工资策略(算法1)

 * @author Administrator

 *

 */

 class HighSalary extends SalaryAbs {

  public function calculate(){

  echo ‘HighSalary!<br>’;

  }

 }

 

/1**

 * 

 * 低工资策略(算法2)

 * @author Administrator

 *

 */

 class LowSalary extends SalaryAbs {

  public function calculate(){

  echo ‘LowSalary!<br>’;

  }

 }

 

/1**

 * 

 * 主体操作类

 * @author Administrator

 *

 */

 class Accountant {

  //public function getResult($salaryStrategy){

static function getResult($salaryStrategy){

  $salary = new $salaryStrategy;

  $salary->calculate();

  }

 }

 

Accountant::getResult(‘HighSalary’);

Accountant::getResult(‘LowSalary’);

    原文作者:杭州周煜
    原文地址: https://blog.csdn.net/qq_16059847/article/details/86010969
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞