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 相关文章推荐
杏林同学录(八)
Oct 09 PHP
php基础知识:类与对象(3) 构造函数和析构函数
Dec 13 PHP
PHP数组对比函数,存在交集则返回真,否则返回假
Feb 03 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 PHP
基于JQuery+PHP编写砸金蛋中奖程序
Sep 08 PHP
php单例模式的简单实现方法
Jun 10 PHP
php is_writable判断文件是否可写实例代码
Oct 13 PHP
使用phpQuery获取数组的实例
Mar 13 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
PHP远程连接oracle数据库操作实现方法图文详解
Apr 11 PHP
PHP判断当前使用的是什么浏览器(推荐)
Oct 27 PHP
php 文件上传至OSS及删除远程阿里云OSS文件
Jul 04 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
在任意字符集下正常显示网页的方法一
2007/04/01 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
2013/06/24 PHP
js 静态动态成员 and 信息的封装和隐藏
2011/05/29 Javascript
用jQuery获取IE9下拉框默认值问题探讨
2013/07/22 Javascript
JavaScript字符串对象toUpperCase方法入门实例(用于把字母转换为大写)
2014/10/17 Javascript
JS交换变量的方法
2015/01/21 Javascript
javascript实现漂亮的拖动层,窗口拖拽特效
2015/04/24 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
vue路由拦截器和请求拦截器知识点总结
2019/11/08 Javascript
vue 实现动态路由的方法
2020/07/06 Javascript
[13:55]Newbee vs Team Spirit
2018/06/07 DOTA
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
python中bisect模块用法实例
2014/09/25 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
基于Python实现迪杰斯特拉和弗洛伊德算法
2020/05/27 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
python 两个一样的字符串用==结果为false问题的解决
2020/03/12 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
精彩的推荐信范文
2013/11/26 职场文书
机械操作工岗位职责
2014/08/08 职场文书
校庆团日活动总结
2014/08/28 职场文书
大专毕业生自我鉴定范文(2篇)
2014/09/27 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
国家助学金感谢信
2015/01/21 职场文书
督导岗位职责范本
2015/04/10 职场文书
婚庆答谢词大全
2015/09/29 职场文书
优秀团员主要事迹范文
2015/11/05 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
Appium中scroll和drag_and_drop根据元素位置滑动
2022/02/15 Python
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript