php常用设计模式(大总结)(浅谈PHP设计模式的策略模式)
导读:简介: 策略模式...
简介:
又叫做政策模式 ,用于如何组织和调用算法的 ,是属于行为型模式的一种 。
策略模式需要三个角色构成: 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版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!