Heim > php教程 > php手册 > Hauptteil

PHP设计模式单例模式

WBOY
Freigeben: 2016-06-13 09:06:13
Original
1359 Leute haben es durchsucht

PHP设计模式——单例模式

 

单例模式也称单态,是23种设计模式中最简单的一种,从他的名字就可以知道他的核心思想,单例模式就是系统中只有一个这样的对象,对象只有一个,在Java或者C#中,单例模式一般有两种,分别是懒汉式、饿汉式,但是在PHP中常用的就是懒汉式,由于PHP是单线程的,懒汉式也不存在双重验证。

 

懒汉式具体代码:

 

<!--?php
/**
 * Created by PhpStorm.
 * User: LYL
 * Date: 2015/4/21
 * Time: 21:25
 */

/**懒汉式
 * Class Singleton
 */
class Singleton
{
    //创建静态对象变量
    private static $instance=null;


    public $age;
    
    //构造函数私有化,防止外部调用
    private function __construct()
    {

    }

    //克隆函数私有化,防止外部克隆对象
    private function __clone()
    {

    }

    //实例化对象变量方法,供外部调用
    public static function getInstance()
    {
        if(empty(self::$instance))
        {
            self::$instance=new Singleton();
        }

        return self::$instance;
    }
}
</pre-->

        测试代码:
Nach dem Login kopieren

$single1=Singleton::getInstance();
$single1->age=22;

$single2=Singleton::getInstance();

$single2->age=24;

echo 变量1的age:{$single1->age}
;
echo 变量2的age:{$single2->age}
;
Nach dem Login kopieren

我们可以看到,变量$single1,$single2的age都是24,说明变量$single1,$single2是一个变量,类Singleton是单例的。

 

 

通过以上代码,我可以整理编写单例模式的三个步骤:

1.创建一个类静态变量

2.私有化构造函数与克隆函数,防止外部调用

3.提供一个外部可以调用的静态方法,实例化第一步创建的静态变量

 

很明显,单例模式的适用场景就是系统中的对象只需要一个就可以的时候,例如,Java中Spring的Bean工厂,PHP中的数据库连接等等,只要有这种需求就首先单例模式。

 


PHP面向对象设计模式

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!