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 相关文章推荐
信用卡效验程序
Oct 09 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
Jul 01 PHP
五款常用mysql slow log分析工具的比较分析
May 22 PHP
提高define性能的php扩展hidef的安装和使用
Jun 14 PHP
PHP性能优化工具篇Benchmark类调试执行时间
Dec 06 PHP
深入php-fpm的两种进程管理模式详解
Jun 03 PHP
thinkPHP中多维数组的遍历方法
Jan 09 PHP
PHP使用curl模拟post上传及接收文件的方法
Mar 04 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
May 06 PHP
php中array_unshift()修改数组key注意事项分析
May 16 PHP
Yii2结合Workerman的websocket示例详解
Sep 10 PHP
windows系统php环境安装swoole具体步骤
Mar 04 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
table标签的结构与合并单元格的实现方法
2013/07/24 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
PHP经典面试题集锦
2015/03/19 PHP
php实现的简单日志写入函数
2015/03/31 PHP
php实现的日历程序
2015/06/18 PHP
javascript语言结构小记(一)
2011/09/10 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
js实现按钮加背景图片常用方法
2014/11/01 Javascript
jQuery中removeClass()方法用法实例
2015/01/05 Javascript
javascript实现移动端上的触屏拖拽功能
2016/03/04 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
微信小程序 使用picker封装省市区三级联动实例代码
2016/10/28 Javascript
javascript入门之window对象【新手必看】
2016/11/22 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
简单实现js拖拽效果
2017/07/25 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
js实现指定时间倒计时效果
2019/08/26 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
python检测lvs real server状态
2014/01/22 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
python3第三方爬虫库BeautifulSoup4安装教程
2018/06/19 Python
python常用函数与用法示例
2019/07/02 Python
python3实现绘制二维点图
2019/12/04 Python
python numpy数组复制使用实例解析
2020/01/10 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
世界上最大的售后摩托车零配件超市:J&P Cycles
2017/12/08 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
儿科主治医生个人求职信
2013/09/23 职场文书
幼儿园数学教学反思
2014/02/02 职场文书
2014年国培研修感言
2014/03/09 职场文书
春节晚会主持词
2014/03/24 职场文书
python中pandas对多列进行分组统计的实现
2021/06/18 Python