zoukankan      html  css  js  c++  java
  • 设计模式之单例模式(php实现)

      github地址:https://github.com/ZQCard/design_pattern

    单例模式:顾名思义就就是创建单个实例的模式。

    优点:保证一个类仅有一个实例,并提供一个访问它的全局访问点。避免使用的类频繁地创建与销毁以致于造成不必要的消耗。

    缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。

    应用实例:数据库的连接、web计数器,不用每次刷新都在数据库里加一次,用单例先缓存起来等等

    由于PHP是单线程,不用考虑多线程造成不完美的单例.

    (1)Singleton.class.php

    <?php

    namespace Singleton;

    class Singleton
    {
    public static $db = null;
    private function __construct()
    {
    $dsn = 'mysql:host=localhost;dbname=blog';
    $username = 'root';
    $passwd = 'zhouqi445864742';
    self::$db = new PDO($dsn, $username, $passwd);
    }

    public static function getInstance()
    {
    if (self::$db == null){
    self::$db = new Singleton();
    }
    return self::$db;
    }
    }

    (2)客户端

    <?php
    spl_autoload_register(function ($className){
        $className = str_replace('\','/',$className);
        include $className.".class.php";
    });
    
    use SingletonSingleton;
    $db = Singleton::getInstance();
    $db2 = Singleton::getInstance();
    echo $db === $db2 ? '单例':'失败';
  • 相关阅读:
    第七章11
    第七章10
    第七章9
    第七章8
    第七章7
    第七章6
    第七章5
    第七章例7-13
    第七章例7-12
    第七章例7-11
  • 原文地址:https://www.cnblogs.com/zhouqi666/p/9107580.html
Copyright © 2011-2022 走看看