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 相关文章推荐
BBS(php &amp; mysql)完整版(一)
Oct 09 PHP
PHP在字符串中查找指定字符串并删除的代码
Oct 02 PHP
Apache下禁止php文件被直接访问的解决方案
Apr 25 PHP
PHP运行模式的深入理解
Jun 03 PHP
php 强制下载文件实现代码
Oct 28 PHP
phpstrom使用xdebug配置方法
Dec 17 PHP
Zend Framework框架Smarty扩展实现方法
Mar 22 PHP
PHP正则表达式过滤html标签属性(DEMO)
May 04 PHP
Laravel中的Auth模块详解
Aug 17 PHP
PHP常见加密函数用法示例【crypt与md5】
Jan 27 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 PHP
利用PHP计算有多少小于当前数字的数字方法示例
Aug 26 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
PHP新手上路(七)
2006/10/09 PHP
PHP中shuffle数组值随便排序函数用法
2014/11/21 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
PHP中substr函数字符串截取用法分析
2016/01/07 PHP
PHP实现的大文件切割与合并功能示例
2018/04/10 PHP
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
JavaScript获取当前日期是星期几的方法
2015/04/06 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
javascript类型系统——日期Date对象全面了解
2016/07/13 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
微信小程序 window_x64环境搭建
2016/09/30 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
javascript构造函数以及原型对象的理解
2017/01/13 Javascript
nodejs入门教程二:创建一个简单应用示例
2017/04/24 NodeJs
Vue2.0权限树组件实现代码
2017/08/29 Javascript
Vue搭建后台系统需要注意的问题
2019/11/08 Javascript
使用Python中的tkinter模块作图的方法
2017/02/07 Python
用Python实现KNN分类算法
2017/12/22 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
Python之lambda匿名函数及map和filter的用法
2019/03/05 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
应届毕业生的自我鉴定
2013/11/13 职场文书
员工培训心得体会
2013/12/30 职场文书
资源工程专业毕业生求职信
2014/02/27 职场文书
授权委托书格式模板
2014/04/03 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
教师个人事迹材料
2014/12/17 职场文书
杜甫草堂导游词
2015/02/03 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
python实现Thrift服务端的方法
2021/04/20 Python
SQLServer之常用函数总结详解
2021/08/30 SQL Server