Code sharing of PHP strategy mode

黄舟
Release: 2023-03-06 17:02:01
Original
1268 people have browsed it

PHPStrategy Mode code sharing

<?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 &#39;<br>&#39;;  
$strategy->setCalculator(new MultiplyCalculator());  
echo $strategy->doCalc(2, 3);
Copy after login

The above is the detailed content of Code sharing of PHP strategy mode. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template