首页IT科技php常用设计模式(大总结)(浅谈PHP设计模式的策略模式)

php常用设计模式(大总结)(浅谈PHP设计模式的策略模式)

时间2025-09-18 20:07:21分类IT科技浏览5230
导读:简介: 策略模式...

简介:

策略模式

又叫做政策模式                ,用于如何组织和调用算法的                       ,是属于行为型模式的一种                。

策略模式需要三个角色构成: Context 封装角色:也叫做上下文角色       ,起承上启下封装作用                ,屏蔽高层模块对策略                、算法的直接访问                        ,封装可能存在的变化                       。 Strategy 抽象策略角色:通常为接口       ,指定规则       。 ConcreteStrategy 具体策略角色:实现抽象策略中的操作        ,该类含有具体的算法                。 适用场景: 优化单元测试                        ,每个测试都有自己独特的算法               ,可利用策略模式自定义实现                        。 实现同一类问题的不同解决方案的场景       。 优点:

算法可以通过参数自由切换        。

方便扩展        ,增加策略只需要实现接口就行了                        。 缺点:

增加类数量               。

其它:

与工厂模式的对比

工厂模式是用来创建对象的        。策略模式是如何组织                       、调用这些算法                        。结果一样但是初衷不同               。 代码: //定义算法接口 抽象策略角色 interface CalcInterface { public function calc($num1, $num2); } //定义加法类 具体策略角色 class Add implements CalcInterface { public function calc($num1, $num2) { return $num1 + $num2; } } //定义减法类 具体策略角色 class Sub implements CalcInterface { public function calc($num1, $num2) { return $num1 - $num2; } } //上下文角色 承上启下 class Context { private $strategy; public function __construct(CalcInterface $strategy) { $this->strategy = $strategy; } public function run($num1, $num2) { return $this->strategy->calc($num1, $num2); } } //调用端========================================================== echo (new Context(new Add()))->run(1,2); echo (new Context(new Sub()))->run(1,2);

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
linux播放声音命令(linux系统比windows系统声音小怎么办?)