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伪造referer实例代码
Sep 20 PHP
PHP中uploaded_files函数使用方法详解
Mar 09 PHP
PHP--用万网的接口实现域名查询功能
Dec 13 PHP
json的键名为数字时的调用方式(示例代码)
Nov 15 PHP
php生成数组的使用示例 php全组合算法
Jan 16 PHP
一个不易被发现的PHP后门代码解析
Jul 05 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
Dec 19 PHP
php支持断点续传、分块下载的类
May 02 PHP
php实现的mongoDB单例模式操作类
Jan 20 PHP
ThinkPHP防止重复提交表单的方法实例分析
May 10 PHP
php微信公众号开发之简答题
Oct 20 PHP
Yii2框架自定义类统一处理url操作示例
May 25 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中OR与|| AND与&amp;&amp;的区别总结
2013/10/26 PHP
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
实例分析10个PHP常见安全问题
2019/07/09 PHP
javascript 页面划词搜索JS
2009/09/28 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
javascript常用功能汇总
2015/07/05 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
通过fastclick源码分析彻底解决tap“点透”
2017/12/24 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
vue通过style或者class改变样式的实例代码
2018/10/30 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
Python深度优先算法生成迷宫
2018/01/22 Python
对python 多个分隔符split 的实例详解
2018/12/20 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
Python简单基础小程序的实例代码
2019/04/28 Python
如何通过python画loss曲线的方法
2019/06/26 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
python爬取2021猫眼票房字体加密实例
2021/02/19 Python
机电一体化自荐信
2013/12/10 职场文书
电气工程师岗位职责
2014/01/01 职场文书
妇产医师自荐信
2014/01/29 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
质量保证书范本
2014/04/29 职场文书
幼师求职自荐信
2014/05/31 职场文书
英语系本科生求职信
2014/07/15 职场文书
一年级数学下册复习计划
2015/01/17 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
Python实现排序方法常见的四种
2021/07/15 Python
Vue的过滤器你真了解吗
2022/02/24 Vue.js