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初学者头痛的十四个问题
Jul 12 PHP
如何分别全角和半角以避免乱码
Oct 09 PHP
PHP HTML代码串截取代码
Dec 29 PHP
php不用内置函数对数组排序的两个算法代码
Feb 08 PHP
PHP几个数学计算的内部函数学习整理
Aug 06 PHP
thinkphp在模型中自动完成session赋值示例代码
Sep 09 PHP
使用PHP实现生成HTML静态页面
Nov 18 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
Dec 18 PHP
WordPress中Gravatar头像缓存到本地及相关优化的技巧
Dec 19 PHP
PHP内核探索之解释器的执行过程
Dec 22 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
PHP对称加密算法(DES/AES)类的实现代码
Nov 14 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
在任意字符集下正常显示网页的方法二(续)
2007/04/01 PHP
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
php常用的url处理函数总结
2014/11/19 PHP
PHP json_encode() 函数详解及中文乱码问题
2015/11/05 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
用jQuery实现一些导航条切换,显示隐藏的实例代码
2013/06/08 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
转换字符串为json对象的方法详解
2013/11/29 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
关于微信jssdk实现多图片上传的一点心得分享
2016/12/13 Javascript
Angularjs 1.3 中的$parse实例代码
2017/09/14 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
nodeJS与MySQL实现分页数据以及倒序数据
2020/06/05 NodeJs
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
python 控制语句
2011/11/03 Python
Python的Lambda函数用法详解
2019/09/03 Python
Django 自动生成api接口文档教程
2019/11/19 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
解决python执行较大excel文件openpyxl慢问题
2020/05/15 Python
使用css3做0.5px的细线的示例代码
2018/01/18 HTML / CSS
Intersport西班牙:在线体育商店
2019/11/06 全球购物
专业毕业生个性的自我评价
2013/10/03 职场文书
卫校中专生的自我评价
2014/01/15 职场文书
2014教师研修学习体会
2014/07/08 职场文书
申报材料格式
2014/12/30 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
MySQL窗口函数的具体使用
2021/11/17 MySQL
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
mapstruct的用法之qualifiedByName示例详解
2022/04/06 Java/Android