单例模式使用小介绍

单例模式特色:

  1. 只能有一个实例。php

  2.  必须自行建立这个实例。redis

  3.  必须给其余对象提供这一实例数据库

单例模式应用场景

  1. 应用程序与数据库打交道的场景,在一个应用中会存在大量的数据库操做,针对数据库句柄链接数据库的行为,使用单例模式能够避免大量的new操做。由于每一次new操做都会消耗系统和内存的资源。设计模式

  2. WEB开发中的全局配置类文件等均可以使用单例模式。memcached

  3. redis示例、memcached示例等等。相似的场景不少、一个系统只要是有且只须要一个实例的类均可以考虑此设计模式。this

简而言之、一个站点有也只须要有一个实例对象的类均可以使用单例模式来设计。如下只是平时简单的单例写法示例。仅供参考!

简单的单例类的写法示例

<?php
/**
 *简而言之、一个站点有也只能有一个实例对象的类均可以使用单例模式来设计。如下只是平时简单的单例写法示例。仅供参考!
 */
class Conf {
    //为了保证该单一实例不被外部修改,使用private
    static private $_instance = null;

    private $_settings = [];

    //对外公开的获取单例示例的方法
    static function getInstance() {
        //首次反问时内部建立一个示例、并保存于静态变量中
        if (self::$_instance == null) {
            self::$_instance = new Conf();
        }
        //返回conf的实例
        return self::$_instance;
    }

    //为了不外面用 new 和 clone来建立而外的实例。此处建立一个私有的 construct 和 clone
    private function __construct() {}
    private function __clone() {}

    //设置配置值
    function set($index, $value) {
        //此处还能够处理不少异常处理,这里很少说
        $this->_settings[$index] = $value;
    }

    //获取配置值
    function get($index) {
        //此处还能够处理不少异常处理,这里很少说
        return isset($this->_settings[$index]) ? $this->_settings[$index] : '';
    }
}
相关文章
相关标签/搜索