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作的文本留言本的例子(一)
Oct 09 PHP
简单介绍下 PHP5 中引入的 MYSQLI的用途
Mar 19 PHP
PHP连接SQLServer2005的实现方法(附ntwdblib.dll下载)
Jul 02 PHP
PHP编程中的常见漏洞和代码实例
Aug 06 PHP
php使用ob_start()实现图片存入变量的方法
Nov 14 PHP
php生成唯一数字id的方法汇总
Nov 18 PHP
php 实现进制相互转换
Apr 07 PHP
php htmlentities()函数的定义和用法
May 13 PHP
php设计模式之单例模式代码
Jun 11 PHP
微信支付开发订单查询实例
Jul 12 PHP
PHP常量define和const的区别详解
May 18 PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 27 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中的array数组类型分析说明
2010/07/27 PHP
PHP实现带重试功能的curl连接示例
2016/07/28 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
JavaScript中常见陷阱小结
2010/04/27 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
jQuery Deferred和Promise创建响应式应用程序详细介绍
2013/03/05 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
微信小程序 登陆流程详细介绍
2017/01/17 Javascript
详解在 Angular 项目中添加 clean-blog 模板
2017/07/04 Javascript
JavaScript实现数值自动增加动画
2017/12/28 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
Vue多组件仓库开发与发布详解
2019/02/28 Javascript
jQuery实现的上拉刷新功能组件示例
2020/05/01 jQuery
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
Python中__init__.py文件的作用详解
2016/09/18 Python
Python守护线程用法实例
2017/06/23 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
Django框架登录加上验证码校验实现验证功能示例
2019/05/23 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
2019/06/14 Python
利用CSS的Sass预处理器(框架)来制作居中效果
2016/03/10 HTML / CSS
购买瑞典当代设计的腕表和太阳眼镜:TRIWA
2016/10/30 全球购物
会计学生自我鉴定
2014/02/06 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
2014年乡镇党建工作总结
2014/11/11 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
财务年终工作总结大全
2019/06/20 职场文书