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 相关文章推荐
rrmdir php中递归删除目录及目录下的文件
May 15 PHP
php curl的深入解析
Jun 02 PHP
解析如何屏蔽php中的phpinfo()函数
Jun 06 PHP
md5 16位二进制与32位字符串相互转换示例
Dec 30 PHP
教你如何快捷的使用cmd访问mysql小技巧
May 26 PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 PHP
简单说说PHP优化那些事(经验分享)
Nov 27 PHP
php使用数组填充下拉列表框的方法
Mar 31 PHP
Laravel 5框架学习之Blade 简介
Apr 08 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
Sep 30 PHP
PHP读MYSQL中文乱码的快速解决方法
Oct 01 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
初探PHP5
2006/10/09 PHP
在PHP中使用redis
2013/11/04 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
Javascript小技巧之生成html元素
2014/05/15 Javascript
Angular用来控制元素的展示与否的原生指令介绍
2015/01/07 Javascript
AngularJS实用开发技巧(推荐)
2016/07/13 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
Bootstrap源码解读模态弹出框(11)
2016/12/28 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
微信内置浏览器图片查看器的代码实例
2019/10/08 Javascript
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
pandas string转dataframe的方法
2018/04/11 Python
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
通过PYTHON来实现图像分割详解
2019/06/26 Python
Python实现微信机器人的方法
2019/09/06 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
ANINE BING官方网站:奢华的衣橱基本款和时尚永恒的单品
2019/11/26 全球购物
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
工程质量承诺书
2014/03/27 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
工作表扬信范文
2015/01/17 职场文书
劳动者解除劳动合同通知书
2015/04/16 职场文书
赤壁观后感(2)
2015/06/15 职场文书
关于童年的读书笔记
2015/06/26 职场文书
保护环境的宣传语
2015/07/13 职场文书
优秀新员工事迹材料
2019/05/13 职场文书
SQL实现LeetCode(175.联合两表)
2021/08/04 MySQL
Django框架中表单的用法
2022/06/10 Python