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 相关文章推荐
基于mysql的论坛(6)
Oct 09 PHP
用PHP和ACCESS写聊天室(十)
Oct 09 PHP
第二节--PHP5 的对象模型
Nov 16 PHP
PHP UTF8中文字符截断函数代码
Sep 11 PHP
PHP数据流应用的一个简单实例
Sep 14 PHP
php stream_get_meta_data返回值
Sep 29 PHP
php fsockopen解决办法 php实现多线程
Jan 20 PHP
php过滤html中的其他网站链接的方法(域名白名单功能)
Apr 24 PHP
php开发微信支付获取用户地址
Oct 04 PHP
PHP微信红包API接口
Dec 05 PHP
调试php程序的简单步骤
Oct 04 PHP
laravel框架模型和数据库基础操作实例详解
Jan 25 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写的MySQL数据库用户认证系统代码
2007/03/22 PHP
用PHP实现的随机广告显示代码
2007/06/14 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
2013/07/03 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
Yii2简单实现给表单添加验证码的方法
2016/07/18 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
jquery搜索框效果实现方法
2015/01/16 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
jQuery.form.js的使用详解
2017/06/14 jQuery
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
JavaScript门道之标准库
2018/05/26 Javascript
angular4 获取wifi列表中文显示乱码问题的解决
2018/10/20 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
2019/09/11 Javascript
解决新建一个vue项目过程中遇到的问题
2020/10/22 Javascript
[57:53]Secret vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Linux 下 Python 实现按任意键退出的实现方法
2016/09/25 Python
Python中异常重试的解决方案详解
2017/05/05 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
python获取微信小程序手机号并绑定遇到的坑
2018/11/19 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
python 命名规范知识点汇总
2020/02/14 Python
学习Python爬虫的几点建议
2020/08/05 Python
python中操作文件的模块的方法总结
2021/02/04 Python
详解android与HTML混合开发总结
2018/06/06 HTML / CSS
Oroton中国官网:澳洲知名奢侈配饰品牌
2017/03/26 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
平安工地汇报材料
2014/08/19 职场文书
恰同学少年观后感
2015/06/08 职场文书