设计模式PHP5实现之----策略(Strategy)

<?php
/**
* 策略模式
*
* 策略(Strategy)模式适用于你有一个可以用两个以上算法来解决的问题时候。解决方案的选择表现为用户做出的决定
* 这个模式也可以解决Web应用程序的多语言/风格表现问题
*
* @author doodoo<pwtitle@gmail.com>
*/

/**
* 字符串替换规则
*
* 这个例子假设对一段文章的替换提供两种可选方案
*/
interface ReplaceRule{
 public function replace();
}

/**
* 方案一
*/
class ReplaceRuleOne implements ReplaceRule {
 public function replace(){
  $subject = str_replace("ABC","doodoo","这是待替换文本!ABC");
  return $subject;
 }
}

/**
* 方案二
*/
class ReplaceRuleTwo implements ReplaceRule {
 public function replace(){
  $subject = str_replace("ABC","PanWei","这是待替换文本!ABC");
  return $subject;  
 }
}


/**
* 算法解决类,以提供客户选择使用何种解决方案
*/
class Solve{
 private $strategy = null;
 
 public function __construct(ReplaceRule $rule){
  $this->strategy = $rule;
 }
 
 /**
 * 取得替换后的内容
 */
 public function getContext(){
  return $this->strategy->replace();
 }
}

// 调用第一种算法
$solve = new Solve(new ReplaceRuleOne());
$str = $solve->getContext();
echo $str;
echo "<BR>/r/n";

// 调用第二种算法
$solve = new Solve(new ReplaceRuleTwo());
$str = $solve->getContext();
echo $str;
?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值