文章摘要
这篇文章介绍了一种通过定义接口和实现类来实现不同计算策略的方法。文章通过定义一个接口`MathStrategy`,并实现其为`Addition`和`Multiplication`两个类,分别对应加法和乘法运算。接着,`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
© 版权声明
文章版权归作者所有,未经允许请勿转载。