1. 3个角色
- 抽象策略角色
- 具体策略角色
- 环境角色(对抽象策略角色的引用)
2. 实现步骤
- 定义抽象角色类(定义好各个实现的共同抽象方法)
- 定义具体策略类(具体实现父类的共同方法)
- 定义环境角色类(私有化申明抽象角色变量,重载构造方法,执行抽象方法)
<?php
/**
* 抽象策略类
**/
abstract class baseAgent {
abstract function printPage();
}
/**
* 用于客户端是IE时调用的类(环境角色)
**/
class IEAgent extends baseAgent {
function printPage()
{
echo 'IE';
}
}
/**
* 用于客户端不是IE时调用的类(环境角色)
**/
class otherAgent extends baseAgent {
function printPage()
{
echo 'not IE';
}
}
/**
* 具体策略角色
**/
class Browser {
public function call($obj)
{
return $obj->printPage();
}
}
$browser = new Browser();
$browser->call(new IEAgent());