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 相关文章推荐
使用phpQuery采集网页的方法
Nov 13 PHP
PHP5.3以上版本安装ZendOptimizer扩展
Mar 27 PHP
PHP实现即时输出、实时输出内容方法
May 27 PHP
如何用PHP来实现一个动态Web服务器
Jul 29 PHP
php5.4传引用时报错问题分析
Jan 22 PHP
PHP随机数 C扩展随机数
May 04 PHP
php连接oracle数据库的核心步骤
May 26 PHP
php二维码生成以及下载实现
Sep 28 PHP
PHP7扩展开发之hello word实现方法详解
Jan 15 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
PHP PDOStatement::bindValue讲解
Jan 30 PHP
laravel-admin 后台表格筛选设置默认的查询日期方法
Oct 03 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 过滤器实现代码
2010/08/09 PHP
php实现加减法验证码代码
2014/02/14 PHP
表单项的name命名为submit、reset引起的问题
2007/12/22 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
莱鸟介绍window.print()方法
2016/01/06 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
Angular2自定义分页组件
2017/04/19 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
详解Vue 动态组件与全局事件绑定总结
2018/11/11 Javascript
Vue+Django项目部署详解
2019/05/30 Javascript
ElementUI Tag组件实现多标签生成的方法示例
2019/07/08 Javascript
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
linux系统使用python获取cpu信息脚本分享
2014/01/15 Python
python中zip()方法应用实例分析
2016/04/16 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
python3调用windows dos命令的例子
2019/08/14 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
Django使用Celery加redis执行异步任务的实例内容
2020/02/20 Python
Python 实现图片转字符画的示例(静态图片,gif皆可)
2020/11/05 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
教师自我鉴定
2013/12/13 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
五一活动标语
2014/06/30 职场文书
上课不认真检讨书
2014/09/17 职场文书
医学检验专业自荐信
2014/09/18 职场文书
党委书记群众路线对照检查材料思想汇报
2014/10/04 职场文书
2014年管理工作总结
2014/11/22 职场文书
丧事酒宴答谢词
2015/09/30 职场文书
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电
详解Nginx的超时keeplive_timeout配置步骤
2022/05/25 Servers