资讯专栏INFORMATION COLUMN

大话PHP设计模式之单例模式

VEIGHTZ / 2659人阅读

摘要:上面是简单的单例模式,自己写程序的话够用了,如果想继续延伸,请传送至大话设计模式之单例模式升级版

看了那么多单例的介绍,都是上来就说怎么做,也没见说为什么这么做的。那小的就来说说为什么会有单例这个模式以便更好的帮助初学者真正的理解这个设计模式,如果你是大神,也不妨看完指正一下O(∩_∩)O
首先我不得不吐槽一下这个模式名字“单例”,初学者通过字面很难理解什么是单例,我觉得应该叫“唯一”模式更贴切,下面会有我的理由。再往下看之前强烈建议先搞明白PHP中“类”的概念以及实现方式。

单例模式的意义

设计单例模式的主要目的是防止已经实例化的对象不被再次实例化(啥叫实例化?兄弟你去百度吧),比如我已经实例化了一个类,等下次我再用此类的时候,会直接返回之前实例化的结果,而不会重新实例化一个新对象。

那么问题来了,这样有啥好处呢?其实你机器性能无限大的时候,这种模式没什么卵用,有这个模式就是当代计算机原理造成的,当我们实例化一个类的时候,电脑会分配一个内存供你使用,说到这应该明白了吧,多次new同一个类会很浪费内存,而且与这个内存相关的东西可能都会多一份,比如说网络连接数等等,总之同样的事别麻烦同一个类,不然类也会很累。。。

单例模式的举例

此时应该上代码,典型的教科书式的代码

class singleMode {  
  
    //用来指向已创建好的实例  
    public static $instance;  
  
    //判断是否已经创建过实例  
    public static function getInstance()  
    {  
    //注意!最关键的代码在这
        if (self::$instance === null) {  
            self::$instance = new self();  
        }  
        return self::$instance;  
    }  
}

这就是一个简单的单例模式,其实就是多了一个if用来判断$instance有没有值,有的话就直接返回$instance,没有就实例化一个新的,这样就避免了重复实例化的目的。
这里还有一个比较重要的概念,我看了很多的文章都没提及,就是static的声明,这个也是必须的条件之一。

为了能全面的理解代码,我们来说说static的作用,有耐心(无聊)的请往下继续看。没有的可以忽略了下面了,其实单例已经说的差不多了。
这里不得不又要提及当代计算机的原理了,来看看程序是怎么运行的:

当我们编写代码的时候,全部内容都储存在计算机的硬盘里,这时什么都没发生,和什么CPU,内存等都没半毛钱关系。当程序运行时,代码才产生作用(好像是废话)。代码运行到new Class的时候,计算机会分配给程序一个内存,当用完的时候内存要被回收。static的声明让计算机知道,这是一个静态变量,这个变量会随着内存分配时一并加载到内存里,这样程序运行的结果就被保留了下来,所以当我们下一次访问getInstance()这个方法时,里面的$instance才会有值。如果不声明static,那么$instance变量就不会常驻内存,而是用的时候才被赋值,这样就没有了继承性。

回到开头,为什么说叫“唯一”模式比较适合呢,因为单例单从字面上理解是多带带的例子,并不能说明是独一无二的,但是唯一只有一个是吧。

上面是简单的单例模式,自己写程序的话够用了,如果想继续延伸,请传送至大话PHP设计模式之单例模式升级版

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22454.html

相关文章

  • 大话PHP设计模式单例模式升级版

    摘要:用来指向已创建好的实例构造函数为空注意这里是关键这是我们需要调用的方法把函数也定义为空,这样就大功告成啦。 接上一篇大话PHP设计模式之单例模式 这一篇介绍一下升级版的单例模式,废话不说先上代码 不完美的单例模式 class singleMode { //用来指向已创建好的实例 public static $instance; //判断是...

    darcrand 评论0 收藏0
  • 优才公开课笔记:php设计模式(一) 单例模式

    摘要:最近开展了三次设计模式的公开课,现在来总结一下设计模式在中的应用,这是第一篇创建型模式之单例模式。不过因为不支持多线程所以不需要考虑这个问题了。 最近开展了三次设计模式的公开课,现在来总结一下设计模式在PHP中的应用,这是第一篇创建型模式之单例模式。 一、设计模式简介 首先我们来认识一下什么是设计模式: 设计模式是一套被反复使用、容易被他人理解的、可靠的代码设计经验的总结。 设计模式不...

    guyan0319 评论0 收藏0
  • PHP设计模式单例模式

    摘要:简介单例模式是指整个应用中类只有一个对象实例的设计模式。它是一种常见的设计模式,在计算机系统中,线程池缓存日志对象对话框打印机数据库操作显卡的驱动程序常被设计成单例。 简介 单例模式是指整个应用中类只有一个对象实例的设计模式。它通常被用来创建对象,确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。 它是一种常见的设计模式,在计算机系统中,线程池、缓存、日志对象、对话框、打...

    OnlyLing 评论0 收藏0
  • php实现设计模式单例模式

    摘要:单例模式是最常用,也是最简单的一种设计模式。什么是单例模式他是一个特殊的类,该类在系统运行时只有一个实例。这个类必须提供一个获取对象实例的方法。可以参考鸟哥的这遍文章,经测试在下是有效的破坏单例 单例模式是最常用,也是最简单的一种设计模式。 什么是单例模式他是一个特殊的类,该类在系统运行时只有一个实例。这个类必须提供一个获取对象实例的方法。 有什么作用1.全局只创建一次实例,提高性能,...

    shery 评论0 收藏0
  • php设计模式单例模式

    摘要:单例模式概念作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例。 单例模式概念 作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。 单利模式三个要点 1.需要一个保存类的唯一实例的静态成员变量 private static $_...

    longmon 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<