正文

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

文章摘要

这篇文章介绍了通过定义一个接口 `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