码迷,mamicode.com
首页 > Web开发 > 详细

php 设计模式 - 单例

时间:2016-05-23 16:48:38      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:

概述:

     作为对象的创建模式,单例确保某一个内在系统中只存在一个实例,它不可以创建副本。
克隆函数(__clone )以及构造函数(__construct )必须声明为私用, 防止外部程序 创建一个新类 ,而失去单例模式的意义。

PHP 语言是一种解释型的语言,在页面执行完成后,所有的相关资源都会被回收。PHP在语言级别上,不能像C#,JAVA编译型语言一样,没办法让某个对象长距内存。
然而在单一请求场景时,还是可以通过单例模式来共享对象,比如数据库连接对象。


class DbConnection
{

    private static $_instance;
    private static $token = 0;

    public static function  getInstance()
    {
        if (static::$_instance instanceof DbConnection) {
            return static::$_instance;
        }
        // 随机生产一个 token 标示当前内
        static::$token = rand(100, 1000);
        static::$_instance = new DbConnection();
        return static::$_instance;
    }


    // 克隆函数以及构造函数必须声明为私用,
    // 防止外部程序 创建一个新类 ,而失去单例模式的意义。
    private function  __clone()
    {

    }

    private function  __construct()
    {

    }

    public function  open()
    {
        echo "init times:" . static::$token . ‘<br/>‘;
    }


}

  

单例与static 类的 比较:

   1、singleton 能够很好的保持对象的面相对象,比如静态工具类则可以使用 static。
2、单例可以实现自某接口,可以继承自某类。静态类也可以继承自某类,但是就没法使用父类里面的protect成员了。


php 设计模式 - 单例

标签:

原文地址:http://www.cnblogs.com/rhythmK/p/5520271.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!