• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP实现的策略模式示例

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

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

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

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

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

    代码如下:

    接口文件UserStrategy.php

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

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

    ?php
    //强制实现接口中的方法
    class MaleUserStrategy implements UserStrategy
    {
      //男性用户登录后会显示iphone6s的广告
      public function showAd()
      {
        echo 'Iphone6s';
      }
      //会显示电子产品类别
      public function showCategory()
      {
        echo '电子产品啊';
      }
    }
    ?>
    
    

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

    ?php
    class FemaleUserStrategy implements UserStrategy
    {
      public function showAd()
      {
        echo '2016女装';
      }
      public function showCategory()
      {
        echo '女装';
      }
    }
    ?>
    
    

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

    ?php
    //如果我想使用上面那些类的话就需要一个文件一个文件的require,但我们可以使用一种方法来自动加载所需要的文件
    //首先定义一个基本的文件路径,因为这些文件我都是放在一个文件夹下的
    define('BASEDIR', __DIR__);
    //载入一个自动require文件的文件,这里我写成Config.php
    require '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 setStrategy($strategy)
      {
        $this->_strategy = $strategy;
      }
    }
    //实例化对象
    $strategy = new Strategy();
    //如果$_GET['female']存在的话就显示女性用户的广告和类别--如果需要添加其它策略的时候只需要在这里加入判断条件就可以了,当然了还需要创建相应策略的类并且一定要去继承接口哦
    if(isset($_GET['female']))
    {
      $people = new FemaleUserStrategy();
    }
    else
    {
      $people = new MaleUserStrategy();
    }
    //把对象传入到策略类里
    $strategy = setStrategy($people);
    //显示广告和类别--因为使用了策略模式,当我们需要新增加一个策略的时候这里就不需要修改了。
    $strategy->index();
    ?>
    
    

    自动引入文件Config.php

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

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

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

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

    您可能感兴趣的文章:
    • php设计模式 Strategy(策略模式)
    • 学习php设计模式 php实现策略模式(strategy)
    • PHP设计模式之策略模式原理与用法实例分析
    • PHP实现的策略模式简单示例
    • PHP策略模式定义与用法示例
    • PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
    • PHP经典设计模式之依赖注入定义与用法详解
    • PHP设计模式之观察者模式定义与用法分析
    • PHP设计模式之单例模式定义与用法分析
    • php设计模式之策略模式应用案例详解
    上一篇:PHP实现数组和对象的相互转换操作示例
    下一篇:PHP单例模式数据库连接类与页面静态化实现方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP实现的策略模式示例 PHP,实现,的,策略,模式,示例,