<?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);
策略模式
最新推荐文章于 2024-06-24 20:02:38 发布