PHP设计模式-单例模式(Singleton For PHP)

来源:互联网 发布:java list remove方法 编辑:程序博客网 时间:2024/05/20 10:57

转自:http://www.cnblogs.com/bluebirds/p/6096537.html

今天讲单例设计模式,这种设计模式和工厂模式一样,用的非常非常多,同时单例模式比较容易的一种设计模式。

 

一、什么是单例设计模式

  单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在

二、单例模式的技巧

  1. 利用$_instance私有变量来保存类的唯一实例化对象;
  2. 设计一个getInstance对外公开的函数,可以获取类唯一实例;
  3. 防止用户用new实例化,和克隆,构造两个__construct、__clone私有函数;

 三、单例模式的应用场景

  数据库设计,我们发送一次请求,可能会需要访问不同的表,那么如果每次访问都 new 一个实例,那必然会造成资源的浪费,所以使用单例模式,可以很好的节省资源。

 

单例类:

复制代码
/** * Singleton pattern */class DataBase{    /**     * 静态成品变量,保存全局实例     */    private static $_instance = null;    /**     *  测试变量,存储日志信息     */    private static $_msg = null;    /**     * 私有构造方法,防止外界实例化对象     */    private function __construct()    {        $connect = "连接数据库操作";    }    /**     * 私有化克隆方法,防止外键克隆对象     */    private function __clone()    {    }    /**     * 静态方法,外界获取实例的唯一接口     * @return Object 返回对象唯一实例     */    public static function getInstance()    {        if (!self::$_instance){            self::$_instance = new DataBase();            self::$_msg = "这是一个新对象" . "<br>";        }else{            self::$_msg = "这个是一个旧的对象" . "<br>";        }        return self::$_instance;    }    public function log()    {        echo self::$_msg;    }}
复制代码

客户端测试代码:

复制代码
    $dbA = DataBase::getInstance();    $dbA->log();    $dbB = DataBase::getInstance();    $dbB->log();    $dbC = DataBase::getInstance();    $dbC->log();
复制代码

输出结果:

  这是一个新对象
  这个是一个旧的对象
  这个是一个旧的对象

 

 别到“对象”别说了,程序员怎么可能有对象!~


原创粉丝点击