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 相关文章推荐
PHP5+UTF8多文件上传类
Oct 17 PHP
一些 PHP 管理系统程序中的后门
Aug 05 PHP
php 获取本机外网/公网IP的代码
May 09 PHP
phpmyadmin里面导入sql语句格式的大量数据的方法
Jun 05 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
Jul 01 PHP
thinkphp模板用法和内容输出实例
Nov 28 PHP
php实现utf-8转unicode函数分享
Jan 06 PHP
PHP+Mysql+jQuery中国地图区域数据统计实例讲解
Oct 10 PHP
PHP代码维护,重构变困难的4种原因分析
Jan 25 PHP
php 输入输出流详解及示例代码
Aug 25 PHP
php获取用户真实IP和防刷机制的实例代码
Nov 28 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 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 mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
PHP中的use关键字概述
2014/07/23 PHP
PHP实现查询手机归属地的方法详解
2017/04/28 PHP
php实现自定义中奖项数和概率的抽奖函数示例
2017/05/26 PHP
在thinkphp5.0路径中实现去除index.php的方式
2019/10/16 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
图片按比例缩放函数
2006/06/26 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
微信小程序 获取相册照片实例详解
2016/11/16 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
详解JS中的柯里化(currying)
2017/08/17 Javascript
vue使用高德地图点击下钻上浮效果的实现思路
2019/10/12 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
2020/10/29 Javascript
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
python使用Image处理图片常用技巧分析
2015/06/01 Python
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
python实现websocket的客户端压力测试
2019/06/25 Python
Pycharm+django2.2+python3.6+MySQL实现简单的考试报名系统
2019/09/05 Python
使用Python爬虫库requests发送请求、传递URL参数、定制headers
2020/01/25 Python
Python过滤掉numpy.array中非nan数据实例
2020/06/08 Python
python实现简单文件读写函数
2021/02/25 Python
HTML5和CSS3让网页设计提升到下一个高度
2009/08/14 HTML / CSS
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
思想专业自荐信范文
2013/12/25 职场文书
CAD制图设计师自荐信
2014/01/29 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
银行简历自我评价
2014/02/11 职场文书
八一建军节演讲稿
2014/09/10 职场文书
乡党政领导班子群众路线教育实践活动个人对照检查材料
2014/09/20 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
小学体育课教学反思
2016/02/16 职场文书
如何使用PostgreSQL进行中文全文检索
2021/05/27 PostgreSQL