<?php// 策略模式interface Calculator{ public function calc($a, $b);}/** * add strategy */class AddCalculator implements Calculator{ public function calc($a, $b) { return intval($a) + intval($b); }}/** * multiply stategy */class MultiplyCalculator implements Calculator{ public function calc($a, $b) { return intval($a) * intval($b); }}// -------------------------------------------------------/** * sample code */class StrategySample{ PRivate $calc; public function __construct(Calculator $c = NULL) { if(!is_null($c)) $this->calc = $c; } /** * set calculator */ public function setCalculator(Calculator $c) { $this->calc = $c; } /** * get calculator */ public function getCalculator() { return $this->calc; } public function doCalc($a, $b) { return $this->calc->calc($a, $b); }}// test code$add = new AddCalculator();$strategy = new StrategySample($add);echo $strategy->doCalc(2, 3);echo '<br>';$strategy->setCalculator(new MultiplyCalculator());echo $strategy->doCalc(2, 3);
新闻热点
疑难解答