策略模式,将一组特定的行为或算法封装成类,以适应某些特定的上下文环境。
假定一个电商网站,要针对男性,女性用户跳转到不同的商品类名
UserStrategy.php
<?php
namespace Core;
interface UserStrategy{
function showAd();
function showCataegory();
}
FemaleUserStrategy.php
<?php
namespace Core;
class FemaleUserStrategy implements UserStrategy{
function showAd(){
echo "2014女装";
}
function showCataegory(){
echo "女装";
}
}
maleUserStrategy.php
<?php
namespace Core;
class MaleUserStrategy implements UserStrategy{
function showAd(){
echo "IPHONE6";
}
function showCataegory(){
echo "数码";
}
}
index.php
<?php
define('BASEDIR',__DIR__);
include BASEDIR.'/Core/Loader.php';
spl_autoload_register('\\Core\\Loader::autoload');
class Page{
protected $strategy;
function index(){
$this->strategy->showAd();
$this->strategy->showCataegory();
}
function setStrategy($strategy){
$this->strategy=$strategy;
}
}
$page=new Page;
if(isset($_GET['female'])){
$strategy=new \Core\FemaleUserStrategy();
}else{
$strategy=new \Core\MaleUserStrategy();
}
$page->setStrategy($strategy);
$page->index();
?>