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 相关文章推荐
浅谈Windows下 PHP4.0与oracle 8的连接设置
Oct 09 PHP
使用sockets:从新闻组中获取文章(三)
Oct 09 PHP
Base64在线编码解码实现代码 演示与下载
Jan 08 PHP
php设计模式  Command(命令模式)
Jun 17 PHP
php根据年月获取季度的方法
Mar 31 PHP
php实现与erlang的二进制通讯实例解析
Jul 23 PHP
Linux下创建nginx脚本-start、stop、reload…
Aug 03 PHP
PHP实现图片旋转效果实例代码
Oct 01 PHP
PHP带节点操作的无限分类实现方法详解
Nov 09 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
May 15 PHP
关于laravel5.5的定时任务详解(demo)
Oct 23 PHP
php的lavarel框架中join和orWhere的用法
Dec 28 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
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
2013/04/26 PHP
PHP5函数小全(分享)
2013/06/06 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
php实现session自定义会话处理器的方法
2015/01/27 PHP
PHP __call()方法实现委托示例
2019/05/20 PHP
JavaScript 原型链学习总结
2010/10/29 Javascript
一个javascript图片阅览组件
2010/11/09 Javascript
javascript随机将第一个dom中的图片添加到第二个div中示例
2013/10/08 Javascript
微信公众号开发 实现点击返回按钮就返回到聊天界面
2016/12/15 Javascript
AngularJS ng-repeat指令中使用track by子语句解决重复数据遍历错误问题
2017/01/21 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
2017/06/12 jQuery
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
详解vue.js移动端配置flexible.js及注意事项
2019/04/10 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
TypeScript的安装、使用、自动编译的实现
2020/04/10 Javascript
[50:05]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
详解Python中heapq模块的用法
2016/06/28 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
python使用tcp实现局域网内文件传输
2020/03/20 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
css3 线性渐变和径向渐变示例附图
2014/04/08 HTML / CSS
Omio美国:全欧洲低价大巴、火车和航班搜索和比价
2017/11/08 全球购物
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
护士自荐信
2013/10/25 职场文书
应届生服务员求职信
2013/10/31 职场文书
团日活动总结书格式
2014/05/08 职场文书
企业安全生产标语
2014/06/06 职场文书
建设单位项目负责人任命书
2014/06/06 职场文书
禁止高声喧哗的标语
2014/06/11 职场文书
英语自我介绍演讲稿
2014/09/01 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
小学教代会开幕词
2016/03/04 职场文书
pandas数值排序的实现实例
2021/07/25 Python
Win11绿屏怎么办?Win11绿屏死机的解决方法
2021/11/21 数码科技