php设计模式-策略模式
Posted chrdai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php设计模式-策略模式相关的知识,希望对你有一定的参考价值。
php策略模式
1、什么是策略模式?
定义:将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,并让它们可以相互替换,这种模式就是策略模式。
简单理解就是 有n个做法供你选择,根据你的需要选择某个策略得到结果
2、为什么要用策略模式?
使用设计模式之后,我们的代码冗余和耦合度变低,每个策略模块完成对应的功能。
当然缺点就是一个功能我们就要响应制作一个策略类,但是我们统观MVC架构当中(ThinkPHP,Yii2),一个控制器对应一个视图,其实也是策略设计模式的体现了。
3、示例代码
业务场景
在一个电商网站中,根据用户的性别来展示不同的商品。我们有展示商品的类目(function showCategory())和展示的广告(function showAd())
实现方式
首先我们要定义一个接口,接口中定义需要实现的方法。
然后分别定义不同的类来实现接口中的方法。
最后在根据用户的不同,分别 new 不同的方法。
/** * @purpose: 父类接口 * Interface UserInterface */ interface UserInterface /** * @purpose: 展示广告 * @return mixed */ public function showAd(); /** * @purpose: 展示商品分类 * @return mixed */ public function showCatetory(); /** * @purpose: 男性用户实现用户接口 * Class MaleUser */ class MaleUser implements UserInterface /** * @purpose: 展示广告 * @return mixed */ public function showAd() echo "电子产品"; /** * @purpose: 展示商品分类 * @return mixed */ public function showCatetory() echo "电脑数码"; /** * @purpose: 女性用户实现用户接口 * Class FemaleUser */ class FemaleUser implements UserInterface /** * @purpose: 展示广告 * @return mixed */ public function showAd() echo "化妆品"; /** * @purpose: 展示商品分类 * @return mixed */ public function showCatetory() echo "服装分类"; if ($_GET[‘male‘]) $user = new MaleUser(); else $user = new FemaleUser(); $user->showAd(); //会根据用户的性别展示各自的广告内容
4、小结
总的来说,我们在开发中的设计原则如下:
- 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起;
- 针对接口编程,不针对实现编程;
- 多用组合,少用继承。
本文为袋鼠学习中的总结,如有转载请注明出处:https://www.cnblogs.com/chrdai/p/11184082.html
以上是关于php设计模式-策略模式的主要内容,如果未能解决你的问题,请参考以下文章