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 相关文章推荐
WHOIS类的修改版
Oct 09 PHP
新手学PHP之数据库操作详解及乱码解决!
Jan 02 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
php中explode与split的区别介绍
Oct 03 PHP
一个简洁的PHP可逆加密函数(分享)
Jun 06 PHP
一个好用的PHP验证码类实例分享
Dec 27 PHP
codeigniter中测试通过的分页类示例
Apr 17 PHP
54个提高PHP程序运行效率的方法
Jul 19 PHP
PHP类和对象相关系统函数与运算符小结
Sep 28 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 PHP
php中array_fill函数的实例用法
Mar 02 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
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
thinkphp特殊标签用法概述
2014/11/24 PHP
php获取用户浏览器版本的方法
2015/01/03 PHP
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
2015/02/28 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
2015/10/02 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
2016/05/10 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
2016/06/15 Javascript
AngularJS基础 ng-dblclick 指令用法
2016/08/01 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
python常规方法实现数组的全排列
2015/03/17 Python
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
django2 快速安装指南分享
2018/01/05 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
python tools实现视频的每一帧提取并保存
2020/03/20 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
Python Django中间件使用原理及流程分析
2020/06/13 Python
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
视光学专业毕业生推荐信
2013/10/28 职场文书
大学生简历的个人自我评价
2013/12/04 职场文书
毕业生自荐书
2013/12/18 职场文书
运动会广播稿50字
2014/01/26 职场文书
解除财产保全担保书
2014/05/20 职场文书
建筑管理专业求职信
2014/07/28 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
未婚证明格式
2015/06/15 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书