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修正代码
May 09 PHP
php计算函数执行时间的方法
Mar 20 PHP
php遍历CSV类实例
Apr 14 PHP
php.ini中的request_order推荐设置
May 10 PHP
php 把数字转换成汉字的代码
Jul 21 PHP
PHP+redis实现添加处理投票的方法
Nov 14 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
Feb 26 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
Nov 14 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
Jul 03 PHP
PHP重置数组为连续数字索引的几种方式总结
Mar 12 PHP
PHP iconv()函数字符编码转换的问题讲解
Mar 22 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
Oct 21 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
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
2006/10/09 PHP
PHP中date()日期函数有关参数整理
2011/07/19 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
js的event详解。
2006/09/06 Javascript
网站被黑的假象--ARP欺骗之页面中加入一段js
2007/05/16 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
表单元素值获取方式js及java方式的简单实例
2016/10/15 Javascript
微信小程序商城项目之侧栏分类效果(1)
2017/04/17 Javascript
Vue2.0如何发布项目实战
2017/07/27 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
React Hooks的深入理解与使用
2018/11/12 Javascript
在vue中根据光标的显示与消失实现下拉列表
2019/09/29 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
微信小程序按顺序同步执行的两种方式
2019/12/20 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
浅谈python抛出异常、自定义异常, 传递异常
2016/06/20 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
python flask 多对多表查询功能
2017/06/25 Python
python实现屏保计时器的示例代码
2018/08/08 Python
python中的数组赋值与拷贝的区别详解
2019/11/26 Python
python源文件的字符编码知识点详解
2021/03/04 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
澳大利亚现代波西米亚风格女装网站:Bohemian Traders
2018/04/16 全球购物
Nebula美国官网:便携式投影仪
2019/03/15 全球购物
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
什么是方法的重载
2013/06/24 面试题
介绍一下Java中标识符的命名规则
2014/02/03 面试题
金属材料工程毕业生个人的自我评价
2013/11/28 职场文书
董事长助理工作职责
2014/06/08 职场文书
舞蹈教育学专业自荐信
2014/06/15 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
Python中Selenium对Cookie的操作方法
2021/07/09 Python
8个JS的reduce使用实例和reduce操作方式
2021/10/05 Javascript
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis
在SQL Server中使用 Try Catch 处理异常的示例详解
2022/07/15 SQL Server