策略抽象类
abstract class Strategy{
//算法方法
abstract public function strtegyInterface();
}
// 具体的策略
class StrategyA extends Strategy {
public function strtegyInterface()
{
echo '实现A算法';
}
}
class StrategyB extends Strategy {
public function strtegyInterface()
{
echo '实现B算法';
}
}
// 根据需求选择调用的策略对象
class Context {
private $strategyObj = '';
public function context(Strategy $strategyObj){
$this->strategyObj = $strategyObj;
}
public function contextInterface(){
$this->strategyObj ->strtegyInterface();
}
}
策略模式就是用来封装算法的,但在实践中,我们发现可以用它来封装几乎所有任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则.就可以考虑使用策略模式处理这种变化的可能性