文章目录 [+]
单例模式
单例模式是设计模式最简单的一种,不多说,下边先上代码。
Danli.php
<?php class Danli{ // 保存类的实例静态成员变量 static private $_instance = null; // 私有的构造方法 private function __construct() { echo '这是私有的构造方法。。。。。。。。。。'; } // 用于访问类的实例的公共静态方法 static function getInstance(){ // 检测是否被实例化 if(!(self::$_instance instanceof Danli)){ echo '第一次实例化。。。。。。。。'; self::$_instance = new Danli(); } return self::$_instance; } public function test(){ echo 'danli/test。。。。。。。。。。。。'; } }
index.php
<?php require './danli.php'; // 第一次类的调用 $first = Danli::getInstance(); $first->test(); $second = Danli::getInstance(); $second->test();
输出结果如下:
第一次实例化 这是私有的构造方法 danli/test。。。。 danli/test。。。。
可以看到只实例化了一次,实现了两次调用内置方法。
接下来简单说一下单例模式。
简单点说,就是让类这个对象成为系统中唯一实例,避免大量的new消耗资源,也方便设置钩子输出日志信息等。
单例模式的详解很多,这里不多解释了,就详细说一下实现方式。
1.一个private的__construct()是必须的,单例类不能在其他地方被实例化,只能被自己实例化。
2.拥有一个保存类的实例的私有静态成员变量。
3.一个静态的公用的静态方法,用于实例化这个类,且访问这个类的实例。
发表评论