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 相关文章推荐
用DBSQL类加快开发MySQL数据库程序的速度
Oct 09 PHP
php中hashtable实现示例分享
Feb 13 PHP
PHP中is_file不能替代file_exists的理由
Mar 04 PHP
PHP 之 写时复制介绍(Copy On Write)
May 13 PHP
PHP开发注意事项总结
Feb 04 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
Aug 18 PHP
Yii实现显示静态页的方法
Apr 25 PHP
如何正确配置Nginx + PHP
Jul 15 PHP
浅谈php(codeigniter)安全性注意事项
Apr 06 PHP
php微信公众号开发之欢迎老朋友
Oct 20 PHP
PHP使用Redis实现Session共享的实现示例
May 12 PHP
php解决crontab定时任务不能写入文件问题的方法分析
Sep 16 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
php字符串按照单词进行反转的方法
2015/03/14 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
php7下的filesize函数
2019/09/30 PHP
使用Sticker.js实现贴纸效果
2015/01/28 Javascript
一不小心就做错的JS闭包面试题
2015/11/25 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
PHP+jquery+ajax实现分页
2016/12/09 Javascript
Node.js 8 中的 util.promisify的详解
2017/06/12 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
2017/08/21 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
Python xlwt设置excel单元格字体及格式
2020/04/18 Python
python如何把嵌套列表转变成普通列表
2018/03/20 Python
如何用python整理附件
2018/05/13 Python
PyQt5笔记之弹出窗口大全
2019/06/20 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
python实现图片横向和纵向拼接
2020/03/05 Python
关于python中的xpath解析定位
2020/03/06 Python
Python实现像awk一样分割字符串
2020/09/15 Python
css3的transition效果和transfor效果示例介绍
2013/10/30 HTML / CSS
怎样实现H5+CSS3手指滑动切换图片的示例代码
2019/05/05 HTML / CSS
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
Ralph Lauren法国官网:美国高品味时装品牌
2017/12/08 全球购物
Fanatics英国官网:美国体育电商
2018/11/06 全球购物
销售业务实习自我鉴定
2013/09/23 职场文书
四个太阳教学反思
2014/02/01 职场文书
公司拓展活动方案
2014/02/13 职场文书
模具专业毕业生自荐书范文
2014/02/19 职场文书
小学捐书活动总结
2014/07/05 职场文书
合同意向书范本
2014/07/30 职场文书
小学生表扬稿范文
2015/05/05 职场文书
党支部季度考核意见
2015/06/02 职场文书