PHP设计模式-策略 发表于 2017-03-31 | 分类于 PHP | 评论数: | 阅读次数: 本文字数: 1.2k | 阅读时长 ≈ 1 分钟 适用性 策略依照使用而定 代码示例12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485/** * 观察者接口 */interface StrategyInterface{ /** * 行为 * @return void */ public function doSomething();}/** * 观察者实体类示例1 */class StrategyExampleOne implements StrategyInterface{ /** * 行为 * @return mixed */ public function doSomething() { echo "你选择了策略1 \n"; }}/** * 观察者实体类示例2 */class StrategyExampleTwo implements StrategyInterface{ /** * 行为 * @return mixed */ public function doSomething() { echo "你选择了策略2 \n"; }}/** * 实体类 * * 依赖外部不同策略的实体类 */class Substance{ /** * 策略实例 * @var object */ private $_strategy; /** * 构造函数 * 初始化策略 * * @param Strategy $strategy 策略实例 */ public function __construct(StrategyInterface $strategy) { $this->_strategy = $strategy; } /** * 模拟一个操作 * * @return mixed */ public function someOperation() { $this->_strategy->doSomething(); }}// 使用策略1$substanceOne = new Substance(new StrategyExampleOne);$substanceOne->someOperation();// 使用策略2$substanceTwo = new Substance(new StrategyExampleTwo);$substanceTwo->someOperation();