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&mysql(六)
Oct 09 PHP
Win2003下APACHE+PHP5+MYSQL4+PHPMYADMIN 的简易安装配置
Nov 18 PHP
介绍php设计模式中的工厂模式
Jun 12 PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 PHP
基于Zookeeper的使用详解
May 02 PHP
Codeigniter+PHPExcel实现导出数据到Excel文件
Jun 12 PHP
PHP清除字符串中所有无用标签的方法
Dec 01 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
thinkphp分页集成实例
Jul 24 PHP
PHP7如何开启Opcode打造强悍性能详解
May 11 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
基于PHP实现用户登录注册功能的详细教程
Aug 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
php adodb操作mysql数据库
2009/03/19 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
让人印象深刻的10个jQuery手风琴效果应用
2012/05/08 Javascript
基于NodeJS的前后端分离的思考与实践(二)模版探索
2014/09/26 NodeJs
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
JS实现仿PS的调色板效果完整实例
2016/12/21 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
jQuery实现基本淡入淡出效果的方法详解
2018/09/05 jQuery
微信小程序实现文字跑马灯
2020/05/26 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
python随机在一张图像上截取任意大小图片的方法
2019/01/24 Python
python里运用私有属性和方法总结
2019/07/08 Python
python Dijkstra算法实现最短路径问题的方法
2019/09/19 Python
Django通过dwebsocket实现websocket的例子
2019/11/15 Python
详解python破解zip文件密码的方法
2020/01/13 Python
Python字符串查找基本操作代码案例
2020/10/27 Python
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
来自圣地亚哥的实惠太阳镜:Knockaround
2018/08/27 全球购物
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
最新大学职业规划书范文
2013/12/30 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
银行行长竞聘演讲稿
2014/04/23 职场文书
责任心演讲稿
2014/05/14 职场文书
商务英语专业毕业生求职信
2014/07/06 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书
2015年少先队活动总结
2015/03/25 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
php7中停止php-fpm服务的方法详解
2021/05/09 PHP
详解MongoDB的条件查询和排序
2021/06/23 MongoDB
Python实现视频自动打码的示例代码
2022/04/08 Python