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作的文本留言本的例子(五)
Oct 09 PHP
PHP多线程抓取网页实现代码
Jul 22 PHP
PHP中的float类型使用说明
Jul 27 PHP
php安全开发 添加随机字符串验证,防止伪造跨站请求
Feb 14 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
Mar 18 PHP
php实现的短网址算法分享
Jun 20 PHP
php中print(),print_r(),echo()的区别详解
Dec 01 PHP
从刷票了解获得客户端IP的方法
Sep 21 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
PHP使用ajax的post方式下载excel文件简单示例
Aug 06 PHP
php引用和拷贝的区别知识点总结
Sep 23 PHP
Laravel框架实现文件上传的方法分析
Sep 29 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 常见郁闷问题答解
2006/11/25 PHP
php实现的Cookies操作类实例
2014/09/24 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
php+ajax实现的点击浏览量加1
2015/04/16 PHP
Yii2.0建立公共方法简单示例
2019/01/29 PHP
JavaScript 闭包深入理解(closure)
2009/05/27 Javascript
javascript 获取函数形参个数
2014/07/31 Javascript
在JS数组特定索引处指定位置插入元素的技巧
2014/08/24 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python操作MySQL数据库的方法分享
2012/05/29 Python
Python生成pdf文件的方法
2014/08/04 Python
深入理解python对json的操作总结
2017/01/05 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
flask应用部署到服务器的方法
2019/07/12 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
Python调用C/C++的方法解析
2020/08/05 Python
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
伦敦最受欢迎的蛋糕店:Konditor & Cook
2019/11/01 全球购物
乌克兰移动电子产品和相关配件的在线商店:iTMag
2020/03/16 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
社区十八大感言
2014/01/19 职场文书
幼儿园老师辞职信
2014/01/20 职场文书
测绘专业大学生职业生涯规划书
2014/02/10 职场文书
马云北大演讲完整版:真心话,什么才是阿里的核心竞争力?
2014/04/04 职场文书
拓展策划方案
2014/06/03 职场文书
小学学校评估方案
2014/06/08 职场文书
幼儿园爱国卫生月活动总结
2014/06/30 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
2014向国旗敬礼网上签名活动总结
2014/09/27 职场文书
2015年小学远程教育工作总结
2015/07/28 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
CSS使用SVG实现动态分布的圆环发散路径动画
2022/12/24 HTML / CSS