文章摘要
这篇文章介绍了通过定义一个接口 `MathStrategy` 和其实现类(如 `Addition` 和 `Multiplication`)来实现动态数学运算的方法。文章还展示了如何通过 `MathContext` 对象动态地更换计算策略,从而实现更换策略后计算结果的变化。代码通过构造 `MathContext` 对象并设置不同的运算策略,分别实现了加法和乘法运算,并输出了结果。文章的核心内容是通过策略替换实现可配置的计算功能。
<?php
interface MathStrategy
{
public function calculate(int $a, int $b): int;
}
class Addition implements MathStrategy
{
public function calculate(int $a, int $b): int
{
return $a + $b;
}
}
class Multiplication implements MathStrategy
{
public function calculate(int $a, int $b): int
{
return $a * $b;
}
}
class MathContext
{
private $strategy;
public function __construct(MathStrategy $strategy)
{
$this->strategy=$strategy;
}
public function setStrategy(MathStrategy $strategy): void
{
$this->strategy=$strategy;
}
public function calculate(int $a, int $b): int
{
return $this->strategy->calculate($a, $b);
}
}
$context=new MathContext(new Addition());
echo $context->calculate(2, 3) . “\n”; // output: 5
$context->setStrategy(new Multiplication());
echo $context->calculate(2, 3) . “\n”; // output: 6
interface MathStrategy
{
public function calculate(int $a, int $b): int;
}
class Addition implements MathStrategy
{
public function calculate(int $a, int $b): int
{
return $a + $b;
}
}
class Multiplication implements MathStrategy
{
public function calculate(int $a, int $b): int
{
return $a * $b;
}
}
class MathContext
{
private $strategy;
public function __construct(MathStrategy $strategy)
{
$this->strategy=$strategy;
}
public function setStrategy(MathStrategy $strategy): void
{
$this->strategy=$strategy;
}
public function calculate(int $a, int $b): int
{
return $this->strategy->calculate($a, $b);
}
}
$context=new MathContext(new Addition());
echo $context->calculate(2, 3) . “\n”; // output: 5
$context->setStrategy(new Multiplication());
echo $context->calculate(2, 3) . “\n”; // output: 6
© 版权声明
文章版权归作者所有,未经允许请勿转载。



