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

  文章主要介绍了PHP单例模式模拟Java Bean实现方法,涉及php面向对象程序设计相关操作技巧,需要的朋友可以参考下。

  实例讲述了PHP单例模式模拟Java Bean实现方法,具体如下:

  问题:

  根据如下杨辉三角形

  实现一个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/>";

  运行结果:

int(1) hit:0

itratorCount:1

  希望PHP单例模式模拟Java Bean实现方法示例详解所述对大家PHP程序设计有所帮助。