单例模式也称作单态,是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; } }