• 售前

  • 售后

热门帖子
入门百科

PHP单例模式模拟Java Bean实现方法示例

[复制链接]
黑头发的汉子子x 显示全部楼层 发表于 2021-10-26 13:27:15 |阅读模式 打印 上一主题 下一主题
本文实例报告了PHP单例模式模仿Java Bean实现方法。分享给大家供大家参考,详细如下:
题目:
根据如下杨辉三角形

实现一个
  1. get_value($row,$col)
复制代码
方法:
(前一个由于代码是手机编辑的,很乱,重新发下)只是为了实现这个方法,很简单,几行代码就能实现,但如果行和列的值稍微大点,你就发现,运行时间很长。以是就这次的题做了个稍微复杂点的例子,说明下单例模式的使用、static的使用、模仿Java Bean、static的使用、递归函数案例等。
  1. /**
  2. * author Winter
  3. * 2016-11-22
  4. * PHP的单例模式
  5. * 模拟Java Bean
  6. * Class Php_bean
  7. */
  8. class Php_bean{
  9.   private static $_instance = null;
  10.   private function __construct(){}
  11.   private $hit = 0;//命中次数
  12.   private $array = array();//缓存
  13.   private $itratorCount = 0;//迭代次数
  14.   public function add_itratorCount(){
  15.     $this->itratorCount ++;
  16.   }
  17.   public function get_itratorCount(){
  18.     return $this->itratorCount;
  19.   }
  20.   public function set_cache($row,$col,$value){
  21.     $this->array[$row."_".$col] = $value;
  22.   }
  23.   public function get_cache($row,$col){
  24.     if(isset($this->array[$row."_".$col])){
  25.       return $this->array[$row."_".$col];
  26.     }else{
  27.       return false;
  28.     }
  29.   }
  30.   public function add_hit(){
  31.     $this->hit ++;
  32.   }
  33.   public function get_hit(){
  34.     return $this->hit;
  35.   }
  36.   public static function instance(){
  37.     if(self::$_instance instanceof self) return self::$_instance;
  38.     self::$_instance = new self;
  39.     return self::$_instance;
  40.   }
  41. }
  42. /**
  43. * @param $row 行
  44. * @param $col 列
  45. * @return int
  46. */
  47. function get_value($row,$col){
  48.   $php_bean = Php_bean::instance();
  49.   $php_bean->add_itratorCount();
  50.   if($col > $row) return 0;
  51.   if($row <=0) return 0;
  52.   if($col == $row) return 1;
  53.   if($row == 1) return 1;
  54.   if($col == 1) return 1;
  55.   $pre = $php_bean->get_cache($row-1,$col-1);
  56.   $next = $php_bean->get_cache($row-1,$col-0);
  57.   if($pre === false){
  58.     $pre = get_value($row-1,$col-1);
  59.     $php_bean->set_cache($row-1,$col-1,$pre);
  60.   }else{
  61.     $php_bean->add_hit();
  62.   }
  63.   if($next === false){
  64.     $next = get_value($row-1,$col-0);
  65.     $php_bean->set_cache($row-1,$col-0,$next);
  66.   }else{
  67.     $php_bean->add_hit();
  68.   }
  69.   $value = $pre + $next;
  70.   return $value;
  71. }
  72. $v = get_value(6,6);
  73. var_dump($v);
  74. $php_bean_obj = Php_bean::instance();
  75. echo "hit:".$php_bean_obj->get_hit()."<br/>";
  76. echo "itratorCount:".$php_bean_obj->get_itratorCount()."<br/>";
复制代码
运行效果:
  1. int(1) hit:0
  2. itratorCount:1
复制代码
更多关于PHP相干内容感爱好的读者可查看本站专题:《php面向对象步伐计划入门教程》、《PHP数组(Array)操纵本领大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操纵入门教程》及《php常见数据库操纵本领汇总》
希望本文所述对大家PHP步伐计划有所资助。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作