其实就是同一方法的不同实现,类似于重写。
和工厂模式有一样的效果,但是策略模式更注重方法的重写,尤其是一种方法。工厂模式更注重类的不同,直接导致很多方法的不一样。
<?php
abstract class baseAgent { //抽象策略类
abstract function PrintPage();
}
//用于客户端是IE时调用的类(环境角色)
class ieAgent extends baseAgent {
function PrintPage() {
return 'IE';
}
}
//用于客户端不是IE时调用的类(环境角色)
class otherAgent extends baseAgent {
function PrintPage() {
return 'not IE';
}
}
class Browser { //具体策略角色
public function call($object) {
return $object->PrintPage ();
}
}
$bro = new Browser ();
echo $bro->call ( new ieAgent () );
?>