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的历史和优缺点
Oct 09 PHP
增加反向链接的101个方法 站长推荐
Jan 31 PHP
php生成缩略图的类代码
Oct 02 PHP
UCenter Home二次开发指南
May 28 PHP
PHP求小于1000的所有水仙花数的代码
Jan 10 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
Jun 25 PHP
php操作xml
Oct 27 PHP
php模拟登陆的实现方法分析
Jan 09 PHP
PHP微信刮刮卡 附微信接口
Jul 22 PHP
PHP模型Model类封装数据库操作示例
Mar 14 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
Apr 02 PHP
PHP时间类完整代码实例
Feb 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 array_push 数组函数
2009/12/26 PHP
php动态生成函数示例
2014/03/21 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
设定php简写功能的方法
2019/11/28 PHP
jQuery dialog 异步调用ashx,webservice数据的代码
2010/08/03 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
浅谈使用MVC模式进行JavaScript程序开发
2015/11/10 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
微信小程序 scroll-view隐藏滚动条详解
2017/01/16 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
2018/07/16 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
python中定义结构体的方法
2013/03/04 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
英文版餐饮业求职信
2013/10/18 职场文书
餐饮主管岗位职责
2013/12/10 职场文书
高中生期末评语大全
2014/01/28 职场文书
长城导游词
2015/01/30 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
学习心得体会
2019/06/20 职场文书
分位数回归模型quantile regeression应用详解及示例教程
2021/11/02 Python
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL
vue项目配置sass及引入外部scss文件
2022/04/14 Vue.js