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扩展vld查看PHP opcode操作步骤
Mar 04 PHP
腾讯QQ微博API接口获取微博内容
Oct 30 PHP
Codeigniter操作数据库表的优化写法总结
Jun 12 PHP
PHP通过串口实现发送短信
Jul 08 PHP
PHP生成随机密码方法汇总
Aug 27 PHP
CodeIgniter连贯操作的底层原理分析
May 17 PHP
php实时倒计时功能实现方法详解
Feb 27 PHP
完美的php分页类
Oct 24 PHP
PHP递归实现汉诺塔问题的方法示例
Nov 25 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
Feb 27 PHP
解决Laravel自定义类引入和命名空间的问题
Oct 15 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 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
世界第一个无线广播电台 KDKA
2021/03/01 无线电
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
PHP多进程编程实例
2014/10/15 PHP
php函数实现判断是否移动端访问
2015/03/03 PHP
mysql alter table命令修改表结构实例详解
2016/09/24 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
各种效果的jquery ui(接口)介绍
2008/09/17 Javascript
javascript 禁止复制网页
2009/06/11 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
浅谈Jquery核心函数
2015/06/18 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
用NodeJS实现批量查询地理位置的经纬度接口
2016/08/16 NodeJs
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
Vue数据驱动模拟实现2
2017/01/11 Javascript
jQuery validate 验证radio实例
2017/03/01 Javascript
jQuery图片瀑布流的简单实现代码
2017/03/15 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
javascript之分片上传,断点续传的实际项目实现详解
2019/09/05 Javascript
JavaScript Canvas编写炫彩的网页时钟
2019/10/16 Javascript
python类定义的讲解
2013/11/01 Python
python 实现两个线程交替执行
2020/05/02 Python
前端实现打印图像功能
2019/08/27 HTML / CSS
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
小学节能减排倡议书
2014/05/15 职场文书
大学生简历求职信
2014/06/24 职场文书
通信工程求职信
2014/07/16 职场文书
群众路线查摆问题及整改措施
2014/10/10 职场文书
2014年技术工作总结范文
2014/11/20 职场文书