码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式之单例模式

时间:2018-05-29 20:42:26      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:https   git   逻辑   继承   有一个   不用   连接   self   github   

  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 Singleton\Singleton;
$db = Singleton::getInstance();
$db2 = Singleton::getInstance();
echo $db === $db2 ? ‘单例‘:‘失败‘;

 

设计模式之单例模式

标签:https   git   逻辑   继承   有一个   不用   连接   self   github   

原文地址:https://www.cnblogs.com/zhouqi666/p/9107580.html

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