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

王朝php·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

<?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;

?>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航