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 相关文章推荐
在IIS7.0下面配置PHP 5.3.2运行环境的方法
Apr 13 PHP
php中定义网站根目录的常用方法
Aug 08 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
Jan 17 PHP
使用PHP函数scandir排除特定目录
Jun 12 PHP
如何解决phpmyadmin导入数据库文件最大限制2048KB
Oct 09 PHP
为你总结一些php系统类函数
Oct 21 PHP
php使用APC实现实时上传进度条功能
Oct 26 PHP
微信公众号开发之文本消息自动回复php代码
Aug 08 PHP
PHP CURL post数据报错 failed creating formpost data
Oct 16 PHP
PHP并发查询MySQL的实例代码
Aug 09 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
PHP实现简易用户登录系统
Jul 10 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 判断字符串中是否包含html标签
2014/02/17 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
图像替换新技术 状态域方法
2010/01/28 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
jquery如何把数组变为字符串传到服务端并处理
2014/04/30 Javascript
javascript 动态创建表格
2015/01/08 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
使用console进行性能测试
2015/04/27 Javascript
jquery 动态增加删除行的简单实例(推荐)
2016/10/12 Javascript
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
解读ES6中class关键字
2017/11/20 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
pyqt4教程之实现windows窗口小示例分享
2014/03/07 Python
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
python访问系统环境变量的方法
2015/04/29 Python
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
Python的地形三维可视化Matplotlib和gdal使用实例
2017/12/09 Python
python面试题小结附答案实例代码
2019/04/11 Python
django如何实现视图重定向
2019/07/24 Python
Python 脚本实现淘宝准点秒杀功能
2019/11/13 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
法制宣传标语
2014/06/23 职场文书
公务员检讨书
2014/11/01 职场文书
初中毕业生自我评价
2015/03/02 职场文书
名人传读书笔记
2015/06/26 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
2019年最新借条范本!
2019/07/08 职场文书
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python