PHP行为设计模式之策略模式(php策略模式和工厂模式的区别和联系)一篇读懂

随心笔谈11个月前发布 admin
82 0

<?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

© 版权声明

相关文章