php策略模式简单示例分析【区别于工厂模式】


Posted in PHP onSeptember 25, 2019

本文实例讲述了php策略模式。分享给大家供大家参考,具体如下:

策略模式和工厂模式很像。

工厂模式:着眼于得到对象,并操作对象。

策略模式:着重得到对象某方法的运行结果。

示例:

//实现一个简单的计算器
interface MathOp{
  public function calculation($num1,$num2);
}
//加法
class MathAdd implements MathOp{
  public function calculation($num1,$num2){
    return $num1 + $num2;
  }
}
//减法
class MathSub implements MathOp{
  public function calculation($num1,$num2){
    return $num1 - $num2;
  }
}
//乘法
class MathMulti implements MathOp{
  public function calculation($num1,$num2){
    return $num1 * $num2;
  }
}
//除法
class MathDiv implements MathOp{
  public function calculation($num1,$num2){
    return $num1 / $num2;
  }
}
class Op{
  protected $op_class = null;
  public function __construct($op_type){
    $this->op_class = 'Math' . $op_type;
  }
  public function get_result($num1,$num2){
    $cls = new $this->op_class;
    return $cls->calculation($num1,$num2);
  }
}
$obj = new Op('Add');
echo $obj->get_result(6,2);//8
$obj = new Op('Sub');
echo $obj->get_result(6,5);//1
$obj = new Op('Multi');
echo $obj->get_result(6,2);//12
$obj = new Op('Div');
echo $obj->get_result(6,2);//3

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
让你的PHP同时支持GIF、png、JPEG
Oct 09 PHP
PHP 进程锁定问题分析研究
Nov 24 PHP
PHP IF ELSE简化/三元一次式的使用
Aug 22 PHP
php中debug_backtrace、debug_print_backtrace和匿名函数用法实例
Dec 01 PHP
smarty内部日期函数html_select_date()用法实例分析
Jul 08 PHP
php生成与读取excel文件
Oct 14 PHP
PHP写的简单数字验证码实例
May 23 PHP
PHP实现模拟http请求的方法分析
Dec 20 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
自写的利用PDO对mysql数据库增删改查操作类
Feb 19 PHP
php微信公众号开发之欢迎老朋友
Oct 20 PHP
PHP序列化和反序列化深度剖析实例讲解
Dec 29 PHP
PHP 观察者模式深入理解与应用分析
Sep 25 #PHP
php模式设计之观察者模式应用实例分析
Sep 25 #PHP
php创建类并调用的实例方法
Sep 25 #PHP
关于php开启错误提示的总结
Sep 24 #PHP
php集成开发环境详解
Sep 24 #PHP
php和nginx交互实例讲解
Sep 24 #PHP
php连接mysql数据库最简单的实现方法
Sep 24 #PHP
You might like
PHP高手需要要掌握的知识点
2014/08/21 PHP
Laravel 框架控制器 Controller原理与用法实例分析
2020/04/14 PHP
javascript 解决表单仍然提交即使监听处理函数返回false
2010/03/14 Javascript
JS完成代码前最好对其做5件事
2013/04/07 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
对Angular.js Controller如何进行单元测试
2016/10/25 Javascript
深入理解vue2.0路由如何配置问题
2017/07/18 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
vue打包相关细节整理(小结)
2018/09/28 Javascript
基于layPage插件实现两种分页方式浅析
2019/07/27 Javascript
解决vue-router 嵌套路由没反应的问题
2020/09/22 Javascript
[02:43]DOTA2英雄基础教程 圣堂刺客
2013/12/09 DOTA
[01:09:13]DOTA2-DPC中国联赛 正赛 CDEC vs XG BO3 第三场 1月19日
2021/03/11 DOTA
python中循环语句while用法实例
2015/05/16 Python
Python基础教程之正则表达式基本语法以及re模块
2016/03/25 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
Python3 mmap内存映射文件示例解析
2020/03/23 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
Django实现内容缓存实例方法
2020/06/30 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
宠物店的创业计划书范文
2014/01/11 职场文书
服装设计专业自荐信
2014/06/17 职场文书
2014国庆节主题活动方案:快乐的国庆节
2014/09/16 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
推荐信范文大全
2015/03/27 职场文书
工程款申请报告
2015/05/15 职场文书
2016年学校招生广告语
2016/01/28 职场文书
python3中apply函数和lambda函数的使用详解
2022/02/28 Python
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS