单例模式

妖精的绣舞 提交于 2019-12-06 09:56:06

  单例模式也称作单态,是N多种设计模式中最简单的一种。  

  单例模式从字面上就可以理解,指一个类只能有一个实例化,目的在于节省代码量、提高使用率、减少资源的消耗,从而达到开发速度快、程序性能好的目的。尤其用在和数据库连接的方面。

  单例模式的元素:

  1、私有化构造函数和克隆函数,禁止外部直接实例化调用;

  2、提供一个外部可调用的静态方法,供外部实例化其他类使用;

  3、创建一个静态变量用于存储实例化后的对象。

 

  单例模式的细分下模式

    1、懒汉式:在需要时才去实例化对象,并将对象存储在静态方法中,这个适用范围最广,

         优点是节省内存,缺点是造成线程冲突,不过PHP是单线程,不用太考虑这个,不过目前PHP有向高级语言靠拢的趋势,很难说以后是否适用。

        2、饿汉式:加载类文件时就已经实例化对象。

         优点是速度快,对用户友好,缺点是占用内存,如果是常驻进程倒是可以考虑。PHP目前不适用

        3、登记式:在需要时加载已经实例化后类,

               基本上集合上面的优点,只加载需要的类,并且省去实例化的步骤,不会造成冲突,影响性能。PHP目前不适用

  

最常见的PHP单例模式(懒汉模式):

<?php
class Singleton
{
    //创建静态对象变量
    private static $instance = null;    //私有化构造函数
    private function __construct()
    {
    }
 
    //私有化克隆函数
    private function __clone()
    {
    }
 
    //实例化对象方法,供外部调用
    public static function getInstance()
    {
        if(empty(self::$instance))
        {
            self::$instance=new Singleton();
        } 
        return self::$instance;
    }
}

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!