将算法抽象封装起来,达到可以随时切换算法,较少逻辑判断的目的
类图:
java实现
public interface IStrategy {
public void doSomething();
}
public class ConcreteStrategy implements IStrategy {
@Override
public void doSomething() {
}
}
public class Context {
private IStrategy strategy = null;
public Context(IStrategy strategy){
this.strategy = strategy;
}
public void doAnything(){
strategy.doSomething();
}
}
php实现
interface IStrategy
{
public function doSomething();
}
class ConcreteStrategy implements IStrategy
{
public function doSomething()
{
echo 'doSomething';
}
}
class Context
{
private $strategy;
public function __construct(IStrategy $strategy)
{
$this->strategy = $strategy;
}
public function doAnything()
{
$this->strategy->doSomething();
}
}
$context = new Context(new ConcreteStrategy());
$context->doAnything();