加载中…
正文 字体大小:

PHP设计模式之:策略模式

(2012-09-19 10:33:16)
标签:

宋体

策略

算法

工厂模式

不同

分类: 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');


0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有