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中使用Oracle数据库(1)
Oct 09 PHP
php PDO中文乱码解决办法
Jul 20 PHP
PHP 变量定义和变量替换的方法
Jul 30 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
zend optimizer在wamp的基础上安装图文教程
Oct 26 PHP
PHP中exec函数和shell_exec函数的区别
Aug 20 PHP
PHP中Http协议post请求参数
Nov 02 PHP
PHP设计模式之简单投诉页面实例
Feb 24 PHP
php计算给定日期所在周的开始日期和结束日期示例
Feb 06 PHP
PHP基于回溯算法解决n皇后问题的方法示例
Nov 07 PHP
Laravel框架Eloquent ORM删除数据操作示例
Dec 03 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
Feb 11 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
Drupal7连接多个数据库及常见问题解决
2014/03/02 PHP
php面向对象与面向过程两种方法给图片添加文字水印
2015/08/26 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
Laravel+Intervention实现上传图片功能示例
2019/07/09 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
2020/04/13 PHP
javascript 全选与全取消功能的实现代码
2012/12/23 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
JavaScript反弹动画效果的实现代码
2017/07/13 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
微信小程序将字符串生成二维码图片的操作方法
2018/07/17 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
想学python 这5本书籍你必看!
2018/12/11 Python
Python I/O与进程的详细讲解
2019/03/08 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
解决安装python3.7.4报错Can''t connect to HTTPS URL because the SSL module is not available
2019/07/31 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
Python 读取WAV音频文件 画频谱的实例
2020/03/14 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
帕克纽约:PARKER NY
2018/12/09 全球购物
物流司机岗位职责
2013/12/28 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
锦旗标语大全
2014/06/23 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
解决Golang中ResponseWriter的一个坑
2021/04/27 Golang