天空之城

您当前位置>>首页>>PHP学习>>PHP设计模式>>PHP设计模式之:策略模式

PHP设计模式之:策略模式

来源:新浪博客   时间:2014-04-08 22:54:01   编辑:administrator   阅读数:177

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

策略模式:

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

适用场景:

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');

PHP设计模式之:策略模式
原文地址: http://blog.sina.com.cn/s/blog_6dbbafe001018zuf.html

上一篇:PHP设计模式之:工厂模式
下一篇:PHP获取文件扩展名的几种方法

    just do it
    天空之城天空之城