PHP单例模式模拟Java Bean实现方法示例详解
	2019-01-24 09:49:03
	来源: 
互联网
	文章主要介绍了PHP单例模式模拟Java Bean实现方法,涉及php面向对象程序设计相关操作技巧,需要的朋友可以参考下。
实例讲述了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单例模式模拟Java Bean实现方法示例详解所述对大家PHP程序设计有所帮助。




