PHP单例模式模拟Java Bean实现方法示例


Posted in PHP onDecember 07, 2018

本文实例讲述了PHP单例模式模拟Java Bean实现方法。分享给大家供大家参考,具体如下:

问题:

根据如下杨辉三角形

PHP单例模式模拟Java Bean实现方法示例

实现一个get_value($row,$col)方法:

(前一个由于代码是手机编辑的,很乱,重新发下)只是为了实现这个方法,很简单,几行代码就能实现,但如果行和列的值稍微大点,你就发现,运行时间很长。所以就这次的题做了个稍微复杂点的例子,说明下单例模式的使用、static的使用、模拟Java Bean、static的使用、递归函数案例等。

/**
 * author Winter
 * 2016-11-22
 * PHP的单例模式
 * 模拟Java Bean
 * Class Php_bean
 */
class Php_bean{
  private static $_instance = null;
  private function __construct(){}
  private $hit = 0;//命中次数
  private $array = array();//缓存
  private $itratorCount = 0;//迭代次数
  public function add_itratorCount(){
    $this->itratorCount ++;
  }
  public function get_itratorCount(){
    return $this->itratorCount;
  }
  public function set_cache($row,$col,$value){
    $this->array[$row."_".$col] = $value;
  }
  public function get_cache($row,$col){
    if(isset($this->array[$row."_".$col])){
      return $this->array[$row."_".$col];
    }else{
      return false;
    }
  }
  public function add_hit(){
    $this->hit ++;
  }
  public function get_hit(){
    return $this->hit;
  }
  public static function instance(){
    if(self::$_instance instanceof self) return self::$_instance;
    self::$_instance = new self;
    return self::$_instance;
  }
}
/**
 * @param $row 行
 * @param $col 列
 * @return int
 */
function get_value($row,$col){
  $php_bean = Php_bean::instance();
  $php_bean->add_itratorCount();
  if($col > $row) return 0;
  if($row <=0) return 0;
  if($col == $row) return 1;
  if($row == 1) return 1;
  if($col == 1) return 1;
  $pre = $php_bean->get_cache($row-1,$col-1);
  $next = $php_bean->get_cache($row-1,$col-0);
  if($pre === false){
    $pre = get_value($row-1,$col-1);
    $php_bean->set_cache($row-1,$col-1,$pre);
  }else{
    $php_bean->add_hit();
  }
  if($next === false){
    $next = get_value($row-1,$col-0);
    $php_bean->set_cache($row-1,$col-0,$next);
  }else{
    $php_bean->add_hit();
  }
  $value = $pre + $next;
  return $value;
}
$v = get_value(6,6);
var_dump($v);
$php_bean_obj = Php_bean::instance();
echo "hit:".$php_bean_obj->get_hit()."<br/>";
echo "itratorCount:".$php_bean_obj->get_itratorCount()."<br/>";

运行结果:

int(1) hit:0
itratorCount:1

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
关于php mvc开发模式的感想
Jun 28 PHP
PHP的SQL注入过程分析
Jan 06 PHP
修改PHP的memory_limit限制的方法分享
Feb 21 PHP
浅析php变量修饰符static的使用
Jun 28 PHP
destoon实现VIP排名一直在前面排序的方法
Aug 21 PHP
php上传文件常见问题总结
Feb 03 PHP
Yii实现显示静态页的方法
Apr 25 PHP
ucenter中词语过滤原理分析
Jul 13 PHP
php结合md5的加密解密算法实例
Sep 30 PHP
yii2-GridView在开发中常用的功能及技巧总结
Jan 07 PHP
php微信公众号开发之关键词回复
Oct 20 PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 PHP
thinkPHP框架实现的简单计算器示例
Dec 07 #PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
Dec 07 #PHP
laravel5使用freetds连接sql server的方法
Dec 07 #PHP
php多进程模拟并发事务产生的问题小结
Dec 07 #PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
Dec 07 #PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
Dec 06 #PHP
PHP实现简易计算器功能
Aug 28 #PHP
You might like
虹吸式咖啡探讨–研磨
2021/03/03 冲泡冲煮
substr()函数中文版
2006/10/09 PHP
浅析php fwrite写入txt文件的时候用 \r\n不能换行的问题
2013/08/06 PHP
php下载文件源代码(强制任意文件格式下载)
2014/05/09 PHP
学习php设计模式 php实现适配器模式
2015/12/07 PHP
详解PHP队列的实现
2019/03/14 PHP
javascript背投广告代码的完善
2008/04/08 Javascript
jquery tools之tooltip
2009/07/25 Javascript
jquery里的each使用方法详解
2010/12/22 Javascript
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
使用jQuery动态加载js脚本文件的方法
2014/04/03 Javascript
JavaScript中的apply和call函数详解
2014/07/20 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
2014/09/06 Javascript
jscript读写二进制文件的方法
2015/04/22 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
js遍历map javaScript遍历map的简单实现
2016/08/26 Javascript
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
python PIL模块与随机生成中文验证码
2016/02/27 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
发现世界上最好的珠宝设计师:JewelStreet
2017/12/17 全球购物
eBay加拿大站:eBay.ca
2019/06/20 全球购物
银行实习生的自我评价
2013/12/09 职场文书
护士试用期自我鉴定
2014/02/08 职场文书
保护黄河倡议书
2014/05/16 职场文书
销售代理协议书
2014/09/30 职场文书
2016新年慰问信范文
2015/03/25 职场文书
考研导师推荐信范文
2015/03/27 职场文书
开学第一周日记(三篇范文)
2019/08/23 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
MySQL时区造成时差问题
2022/04/13 MySQL