设计模式之单例模式
Posted 周起
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之单例模式相关的知识,希望对你有一定的参考价值。
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 ? ‘单例‘:‘失败‘;
以上是关于设计模式之单例模式的主要内容,如果未能解决你的问题,请参考以下文章