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
Oct 09 PHP
wordpress之wp-settings.php
Aug 17 PHP
快速开发一个PHP扩展图文教程
Dec 12 PHP
Blitz templates 最快的PHP模板引擎
Apr 06 PHP
Php获取金书网的书名的实现代码
Jun 11 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 PHP
smarty巧妙处理iframe中内容页的代码
Mar 07 PHP
教你如何在CI框架中使用 .htaccess 隐藏url中index.php
Jun 09 PHP
PHP工程师VIM配置分享
Dec 15 PHP
Laravel框架实现发送短信验证功能代码
Jun 06 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
Jun 15 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和XSS跨站攻击的防范
2007/04/17 PHP
php file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
PHP大文件切割上传功能实例分析
2019/07/01 PHP
jquery div 居中技巧应用介绍
2012/11/24 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
JQuery radio(单选按钮)操作方法汇总
2015/04/15 Javascript
js结合正则实现国内手机号段校验
2015/06/19 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
layui复选框限制选择个数的方法
2019/09/18 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
vue3.0 的 Composition API 的使用示例
2020/10/26 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
Python实现一个转存纯真IP数据库的脚本分享
2017/05/21 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
在Python运行时动态查看进程内部信息的方法
2019/02/22 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
python线程定时器Timer实现原理解析
2019/11/30 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
写给学生的新学期寄语
2014/01/18 职场文书
决心书范文
2014/03/11 职场文书
社区居务公开实施方案
2014/03/27 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
开展党的群众路线教育实践活动总结报告
2014/10/31 职场文书
2016教师六五普法学习心得体会
2016/01/21 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL