首页 > 作文

PHP实现的策略模式示例

更新时间:2023-04-07 11:37:37 阅读: 评论:0

本文实例讲述了php实现的策略模式。分享给大家供大家参考,具体如下:

个人觉得设计模式只有在实际应用中才能够慢慢的去熟悉,到最后做到心中有模式,事事有模式,哈哈

例如:一个电商首页,可以根据登陆用户的性别不同显示不同的内容,比如广告和商品类别。

传统方法:在程序内部使用多个if,el进行判断,这样很难维护,比如我想要再加入一个人妖用户!那么我就要在程序中再加入el if判断,这样写出来的程序看起来很乱,而且不易维护。

策略模式:实现的思想是这样的,创建一个接口,对于每个类别的用户创建一个类,分别去实现接口中的方法,在首页进行判断实例化哪个类。

代码如下:

接口文件urstrategy.php

<?php//定义接口,我要展示广告和类别interface urstrategy{  //显示广告的方法  public function showad();  //显示类别的方法  public function showcategory();}?>

男性用户的具体显示maleurstrategy.php

<?php//强制实现接口中的方法class maleurstrategy implements urstrategy{  //男性用户登录后会显示iphone6曲线s的广告  public function showad()  {    echo 'iphone6s';  }  //会显示电子产品类别  public function showcategory()  {    echo '电子产品啊';  }}?>

女性用户的具体显示femaleurstrategy.php

<?phpclass femaleurstrategy implements urstrategy{  public function showad()  {    echo '2016女装';  }  public function showcategory()  {    echo '女装';  }}?>时光荏苒怎么读

重点来了,创建首页文件strategy.php

<?php//如果我想使用上面那些类的话就需要一个文件一个文件的require,但我们可以使用一种方法来自动加载所需要的文件//首先定义一个基本的文件路径,因为这些文件我都是放台风的好处在一个文件火龙果游戏夹下的define('badir', __dir__);//载入一个自动require文件的文件,这里我写成config.phprequire 'config.php';//php提供的spl库,这我们就把需要的文件都加载进来了//那么spl_autoload_register()是什么意思呢?其实就是,当程序运行碰到了没有定义的类的时候就会自动执行它里面的函数,所以就把文件加载近来了呀!spl_autoload_register('config::autoload');class strategy{  //定义一个变量来存储策略  protected $_strategy;  //定义展示广告和类别的方法  public function index()  {    echo 'ad:';    echo $this->_strategy->showad();    echo '<br/>';    echo 'category:';    echo $this->_strategy->showcategory();  }  //创建不同的策略  public function tstrategy($strategy)  {    $this->_strategy = $strategy;  }}//实例化对象$strategy = new strategy();//如果$_get['female']存在的话就显示女性用户的广告和类别--如果需要添加其它策略的时候只需要在这里加入判断条件就可以了,当然了还需要创建相应策略的类并且一定要去继承接口哦if(ist($_get['female'])){  $people = new femaleurstrategy();}el{  $people = new maleurstrategy();}//把对象传入到策略类里$strategy = tstrategy($people);//显示广告和类别--因为使用了策略模式,当我们需要新增加一个策略的时候这里就不需要修改了。$strategy->index();?>

自动引入文件config.php

<?php//这里大家可以看到,我的文件都是大写开头的,而且每个文件中只有一个类,并且这个类的名字是和文件名一样的,其实这是一种框架的规范,大家有兴趣的话可以查找一下,psr-0规范class config{  //定义一个自动引入文件的方法  static function autoload($class)  {    //这里拼接我们需要引入文件的路径    require badir.'/'.$class.'.php';  }}?>

告诫自己在以后的编程中多去考虑,熟能生巧。

更多关于php相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《php数组(母亲节对母亲的感谢array)操作技巧大全》、《php基本语法入门教程》、《php运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家php程序设计有所帮助。

本文发布于:2023-04-07 11:37:35,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/62a5d29c53ace632f65960406bc211be.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:PHP实现的策略模式示例.doc

本文 PDF 下载地址:PHP实现的策略模式示例.pdf

下一篇:返回列表
标签:文件   策略   类别   方法
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图