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 print类函数使用总结
Jun 25 PHP
php学习笔记 PHP面向对象的程序设计
Jun 13 PHP
php curl基本操作详解
Jul 23 PHP
php 强制下载文件实现代码
Oct 28 PHP
实用的PHP带公钥加密类分享(每次加密结果都不一样哦)
Aug 20 PHP
PHP实现HTML生成PDF文件的方法
Nov 07 PHP
PHP实现CSV文件的导入和导出类
Mar 24 PHP
java模拟PHP的pack和unpack类
Apr 13 PHP
Thinkphp自定义代码生成工具及用法说明(附下载地址)
May 27 PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 PHP
老生常谈PHP数组函数array_merge(必看篇)
May 25 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 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后门URL的防范
2013/11/12 PHP
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
如何利用预加载优化Laravel Model查询详解
2017/08/11 PHP
Laravel5.4框架中视图共享数据的方法详解
2019/09/05 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
圣诞节Merry Christmas给博客添加浪漫的下雪效果基于jquery实现
2012/12/27 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
JS实现的新浪微博大厅文字内容滚动效果代码
2015/11/05 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
浅谈JS中json数据的处理
2016/06/30 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
nodejs中art-template模板语法的引入及冲突解决方案
2017/11/07 NodeJs
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
2017/11/09 Javascript
Vue实现侧边菜单栏手风琴效果实例代码
2018/05/31 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
Python基础教程之内置函数locals()和globals()用法分析
2018/03/16 Python
python使用turtle库绘制时钟
2020/03/25 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
详解Python中第三方库Faker
2020/09/25 Python
python字符串拼接+和join的区别详解
2020/12/03 Python
10个顶级Python实用库推荐
2021/03/04 Python
Nordgreen手表德国官方网站:丹麦极简主义手表
2019/10/31 全球购物
婚纱摄影师求职信
2014/03/07 职场文书
校庆活动方案
2014/03/31 职场文书
创先争优公开承诺书
2014/08/30 职场文书
先进工作者事迹材料
2014/12/23 职场文书
邀请书模板
2015/02/02 职场文书
经济纠纷起诉状
2015/05/20 职场文书
Go语言中的UTF-8实现
2021/04/26 Golang
Mysql文件存储图文详解
2021/06/01 MySQL
Python实现批量自动整理文件
2022/03/16 Python