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 相关文章推荐
浅谈Windows下 PHP4.0与oracle 8的连接设置
Oct 09 PHP
WHOIS类的修改版
Oct 09 PHP
php下删除字符串中HTML标签的函数
Aug 27 PHP
PHP中10个不常见却非常有用的函数
Mar 21 PHP
php 传值赋值与引用赋值的区别
Dec 29 PHP
php下连接mssql2005的代码
Jan 17 PHP
超级实用的7个PHP代码片段分享
Jan 05 PHP
浅析php插件 HTMLPurifier HTML解析器
Jul 01 PHP
Laravel日志用法详解
Oct 09 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 04 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和ACCESS写聊天室(七)
2006/10/09 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
php实现文件下载功能的几个代码分享
2014/05/10 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
JQuery this 和 $(this) 的区别
2009/08/23 Javascript
IE的事件传递-event.cancelBubble示例介绍
2014/01/12 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
node.js 用socket实现聊天的示例代码
2017/10/17 Javascript
对于防止按钮重复点击的尝试详解
2019/04/22 Javascript
微信小程序实现手势滑动卡片效果
2019/08/26 Javascript
微信小程序间使用navigator跳转传值问题实例分析
2020/03/27 Javascript
详解React 元素渲染
2020/07/07 Javascript
Vue 实现对quill-editor组件中的工具栏添加title
2020/08/03 Javascript
vue数据更新UI不刷新显示的解决办法
2020/08/06 Javascript
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
python执行系统命令后获取返回值的几种方式集合
2018/05/12 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
pandas DataFrame实现几列数据合并成为新的一列方法
2018/06/08 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
HTML5实现自带进度条和滑块滑杆效果
2018/04/17 HTML / CSS
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
介绍Java的内部类
2012/10/27 面试题
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
英语辞职信怎么写
2015/02/28 职场文书
环卫个人总结
2015/03/03 职场文书
2016年优秀团支部事迹材料
2016/02/26 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技