单例模式

Posted 蔡晓明

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单例模式相关的知识,希望对你有一定的参考价值。

单例模式:

<?php
/**
 * RedisOperate.php
 *
 * 单例模式设置Redis操作类
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/9/18 0018
 * Time: 下午 4:07
 */
class RedisOperate extends Redis
{
    // 实例
    protected  static $_instance = null;

    /**
     * Single instance (获取自己的实例)
     *
     * @return RedisOperate
     */
    public static function getInstance() {
        if (null === self::$_instance) {
            self::$_instance = new self();
            $host = $_SERVER[‘REDIS_HOST‘];
            $port = $_SERVER[‘REDIS_PORT‘];
            self::$_instance->connect($host, $port);
        }
        return self::$_instance;
    }
}

单例方法操作:

<?php
/**
 * singletonPattern.php
 *
 * 单例模式
 *
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/9/18 0018
 * Time: 下午 4:11
 */

// 载入Redis
include_once(‘RedisOperate.php‘);

class Client
{
    /**
     * 初始化配置文件
     *
     * @return null
     */
    public static function initConfig() {
        // Redis主机
        $_SERVER[‘REDIS_HOST‘] = ‘127.0.0.1‘;

        // Redis port
        $_SERVER[‘REDIS_PORT‘] = 6379;
    }

    /**
     * 主函数
     *
     * @return null
     */
    public function main() {
        // 初始化配置
        self::initConfig();

        // Redis key3
        RedisOperate::getInstance()->set("key3", "Redis Code3");
        echo RedisOperate::getInstance()->get("key3");
        echo "\r\n---\r\n";

        // Redis key4
        RedisOperate::getInstance()->set("key4", "Redis Code4");
        echo RedisOperate::getInstance()->get("key4");
        echo "\r\n---\r\n";
    }
}

/**
 * 程序入口
 */
function start() {
    $client = new Client();
    $client->main();
}

start();

 

以上是关于单例模式的主要内容,如果未能解决你的问题,请参考以下文章

常用代码片段

性能比较好的单例写法

片段作为 Android 中的单例

单例片段或保存网页视图状态

你熟悉的设计模式都有哪些?写出单例模式的实现代码

单例模式以及静态代码块