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(2)――PHP类型
Feb 15 PHP
php命令行用法入门实例教程
Oct 27 PHP
laravel 4安装及入门图文教程
Oct 29 PHP
php静态文件生成类实例分析
Jan 03 PHP
PHP答题类应用接口实例
Feb 09 PHP
PHP异常处理浅析
May 12 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
Nov 05 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
Yii2实现中国省市区三级联动实例
Feb 08 PHP
PHP静态成员变量和非静态成员变量详解
Feb 14 PHP
Yii框架实现记录日志到自定义文件的方法
May 23 PHP
详解laravel安装使用Passport(Api认证)
Jul 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实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
深入mysql_fetch_row()与mysql_fetch_array()的区别详解
2013/06/05 PHP
php获得url参数中具有&的值的方法
2014/03/05 PHP
PHP+Mysql+Ajax+JS实现省市区三级联动
2014/05/23 PHP
PHP+JS实现大规模数据提交的方法
2015/07/02 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
2016/01/18 PHP
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
用js的for循环获取radio选中的值
2013/10/21 Javascript
js运动动画的八个知识点
2015/03/12 Javascript
JavaScript实现自动对页面上敏感词进行屏蔽的方法
2015/07/27 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
把普通对象转换成json格式的对象的简单实例
2016/07/04 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
highcharts.js数据绑定方式代码实例
2019/11/13 Javascript
AngularJS动态生成select下拉框的方法实例
2019/11/17 Javascript
使用pkg打包ThinkJS项目的方法步骤
2019/12/30 Javascript
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python迭代器与生成器基本用法分析
2018/07/26 Python
CSS3 文字动画效果
2020/11/12 HTML / CSS
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
高校学生干部的自我评价分享
2013/11/04 职场文书
12岁生日感言
2014/01/21 职场文书
交通事故委托书范本(2篇)
2014/09/21 职场文书
教师党员学习群众路线心得体会
2014/11/04 职场文书
英语演讲开场白
2015/05/29 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
2021/05/30 Javascript
解决redis批量删除key值的问题
2022/03/23 Redis
python APScheduler执行定时任务介绍
2022/04/19 Python