PHP实现的策略模式简单示例


Posted in PHP onAugust 25, 2017

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

比如说购物车系统,在给商品计算总价的时候,普通会员肯定是商品单价乘以数量,但是对中级会员提供8者折扣,对高级会员提供7折折扣,这种场景就可以使用策略模式实现:

<?php
/**
 * 策略模式实例
 *
 */
//抽象策略角色《为接口或者抽象类,给具体策略类继承》
interface Strategy
{
  public function computePrice($price);
}
//具体策略角色-普通会员策略类
class GenernalMember implements Strategy
{
  public function computePrice($price)
  {
    return $price;
  }
}
//具体策略角色-中级会员策略类
class MiddleMember implements Strategy
{
  public function computePrice($price)
  {
    return $price * 0.8;
  }
}
//具体策略角色-高级会员策略类
class HignMember implements Strategy
{
  public function computePrice($price)
  {
    return $price * 0.7;
  }
}
//环境角色实现类
class Price
{
  //具体策略对象
  private $strategyInstance;
  //构造函数
  public function __construct($instance)
  {
    $this->strategyInstance = $instance;
  }
  public function compute($price)
  {
    return $this->strategyInstance->computePrice($price);
  }
}
//客户端使用
$p = new Price(new HignMember());
$totalPrice = $p->compute(100);
echo $totalPrice; //70
?>

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

PHP 相关文章推荐
PHP_Flame(Version:Progress)的原代码
Oct 09 PHP
php 字符转义 注意事项
May 27 PHP
yii框架源码分析之创建controller代码
Jun 28 PHP
php 搜索框提示(自动完成)实例代码
Feb 05 PHP
php网上商城购物车设计代码分享
Feb 15 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
php将字符串转换成16进制的方法
Mar 17 PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 PHP
php+ajax实现的点击浏览量加1
Apr 16 PHP
php 查找数组元素提高效率的方法详解
May 05 PHP
Kindeditor编辑器添加图片上传水印功能(php代码)
Aug 03 PHP
PHP实现函数内修改外部变量值的方法示例
Dec 28 PHP
php实现简单的权限管理的示例代码
Aug 25 #PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 #PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 #PHP
使用YII2框架实现微信公众号中表单提交功能
Sep 04 #PHP
PHP实现批量重命名某个文件夹下所有文件的方法
Sep 04 #PHP
PHP读取、解析eml文件及生成网页的方法示例
Sep 04 #PHP
PHP钩子与简单分发方式实例分析
Sep 04 #PHP
You might like
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
php curl_init函数用法
2014/01/31 PHP
PHP中使用strpos函数实现屏蔽敏感关键字功能
2014/08/21 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
JavaScript中的事件处理
2008/01/16 Javascript
javascript:文字不间断向左移动的实例代码
2013/08/08 Javascript
前台js对象在后台转化java对象的问题探讨
2013/12/20 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
JavaScript实现区块链
2018/03/14 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
NodeJS读取分析Nginx错误日志的方法
2019/05/14 NodeJs
微信小程序点餐系统开发常见问题汇总
2019/08/06 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
Python字符串处理实例详解
2017/05/18 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
Python实现多进程的四种方式
2019/02/22 Python
python文件选择对话框的操作方法
2019/06/27 Python
Python requests设置代理的方法步骤
2020/02/23 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
Python 实现RSA加解密文本文件
2020/12/30 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
标准毕业生自荐信范文
2013/11/04 职场文书
师范教师大学生职业生涯规划范文
2014/01/05 职场文书
政府个人对照检查材料
2014/08/28 职场文书
教师师德师风整改措施
2014/10/24 职场文书
有限责任公司股东合作协议书范本
2014/10/30 职场文书
谢师宴邀请函
2015/02/02 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers