PHP实现的策略模式示例
发布:smiling 来源: PHP粉丝网 添加日期:2021-11-13 22:27:21 浏览: 评论:0
这篇文章主要介绍了PHP实现的策略模式,简单介绍了策略模式的概念、原理并结合实例形式分析了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';
- }
- }
- ?>
Tags: PHP策略模式
相关文章
- ·php策略模式简单示例分析【区别于工厂模式】(2021-12-22)
- ·php 策略模式原理与应用深入理解(2021-12-22)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)