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 相关文章推荐
中英文字符串翻转函数
Dec 09 PHP
PHP 日常开发小技巧
Sep 23 PHP
使用php shell命令合并图片的代码
Jun 23 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
修改ThinkPHP缓存为Memcache的方法
Jun 25 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
Sep 10 PHP
php实现的Timer页面运行时间监测类
Sep 24 PHP
php数组添加元素方法小结
Dec 20 PHP
Laravel 5框架学习之路由、控制器和视图简介
Apr 07 PHP
Yii2设置默认控制器的两种方法
May 19 PHP
php中isset与empty函数的困惑与用法分析
Jul 05 PHP
laravel 修改记住我功能的cookie保存时间的方法
Oct 14 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
CI(Codeigniter)的Setting增强配置类实例
2016/01/06 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
javascript 自动填写表单的实现方法
2010/04/09 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
js实现的类似于asp数据字典的数据类型代码实例
2014/09/03 Javascript
Bootstrap模态框禁用空白处点击关闭
2016/10/20 Javascript
JS前端加密算法示例
2016/12/22 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
AngularJS学习笔记之表单验证功能实例详解
2017/07/06 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
微信小程序获取微信运动步数的实例代码
2017/07/20 Javascript
swiper插件自定义切换箭头按钮
2017/12/28 Javascript
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
Vue 的 v-model用法实例
2020/11/23 Vue.js
Windows和Linux下使用Python访问SqlServer的方法介绍
2015/03/10 Python
Python文件去除注释的方法
2015/05/25 Python
Python利用pandas处理Excel数据的应用详解
2019/06/18 Python
Python和Sublime整合过程图示
2019/12/25 Python
PyQt5实现简单的计算器
2020/05/30 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
美国专业汽车音响和移动电子产品零售商:Car Toys
2019/05/13 全球购物
一套Java笔试题
2016/08/20 面试题
应届本科生推荐信范文
2013/12/25 职场文书
班主任工作年限证明
2014/01/12 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
安全月活动总结
2014/05/05 职场文书
物业公司的岗位任命书
2014/06/06 职场文书
会计岗位说明书
2014/07/29 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
家长对孩子的寄语
2015/02/26 职场文书
幼师自荐信范文
2015/03/06 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
检讨书格式范文
2015/05/07 职场文书
学习经验交流会总结
2015/11/02 职场文书
PyTorch 如何自动计算梯度
2021/05/23 Python