【PHP-设计模式】单例模式

举报
原来是咔咔 发表于 2022/03/27 00:14:18 2022/03/27
【摘要】 author:咔咔 wechat:fangkangfk 做什么:这是一份单例模式的代码,我们需要对他进行debug调试,查看运行步骤 文件:就是下面的这份代码,直接拿过去就可以用 测试:使用debug 为什么使用:就拿链接数据库来说,我们在链接数据库是只需要链接一次的,也就是只需要实例化一次对象就可以了,但是实际情况下我们...

author:咔咔

wechat:fangkangfk

做什么:这是一份单例模式的代码,我们需要对他进行debug调试,查看运行步骤

文件:就是下面的这份代码,直接拿过去就可以用

测试:使用debug

为什么使用:就拿链接数据库来说,我们在链接数据库是只需要链接一次的,也就是只需要实例化一次对象就可以了,但是实际情况下我们运行一次就会new一次对象,使用单例模式可以避免大量的new操作,因为每一次实例化都会消耗系统和内存的资源

特点:

只会创建一个对象

必须自行创建这个实例

必须给其他对象提供这个实例


  
  1. <?php
  2. class Single {
  3. private $name;//声明一个私有的实例变量
  4. private function __construct(){//声明私有构造方法为了防止外部代码使用new来创建对象。
  5. }
  6. static public $instance;//声明一个静态变量(保存在类中唯一的一个实例)
  7. static public function getinstance(){//声明一个getinstance()静态方法,用于检测是否有实例对象
  8. $kaka = self::$instance;
  9. if(!$kaka){
  10. self::$instance = new self();
  11. }
  12. return self::$instance;
  13. }
  14. public function setname($n){ $this->name = $n; }
  15. public function getname(){ return $this->name; }
  16. }
  17. $oa = Single::getinstance();
  18. $ob = Single::getinstance();
  19. $oa->setname('hello world');
  20. $ob->setname('good morning');
  21. $c = $oa->getname();
  22. $d = $ob->getname();

下来我们使用debug先看一下$oa这个对象运行步骤

运行步骤:

之$oa = Single::getinstance();

1.会直接走getinstance这个方法

2.$instance这个值是用来存储实例的对象的,第一次进这个实例是没有对象的,所有会直接创建这个实例

3.返回实例出来的对象

运行步骤:

之$ob = Single::getinstance();

1.同样也会走getinstance()这个方法

2.但是这个时候$kaka已经有存在的实例了,所以就不会在新创建,直接return

从以上俩个方法就可以很明了的看出来,这段代码只会实例化对象一次,这也就是咱们的单例模式

最后俩个方法getname()肯定都是good morning了

文章来源: blog.csdn.net,作者:咔咔-,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/fangkang7/article/details/84376936

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。