客官,留下你的赞;成为我的粉丝,一起上车哦!评论区欢迎你的留言
你可以在这里查看并fork
源代码 GitHub
单例模式
下面将围绕单例模式是什么
,为什么要用单例模式
,以及怎么用PHP语言实现单例模式
。
是什么
根据字面意思,可以简单的理解为只有一个实例的一种模式,也就是说不管new这个类多少次,始终只有一个对象实例。
为什么
一般在数据库连接、锁文件等方面采用单例模式。拿数据库连接来说,如果每次都重新创建一个新的实例来进行数据库连接的话,会消耗性能,浪费资源。如果使用了单例模式,上次创建的连接实例还存在,会继续使用,不进行创建;否则创建。
怎么做
下面用PHP语言实现,完整的代码可以到GitHub查看或fork
<?php
/**
* 单例模式
* 特点:四私一公(四私:私有实例变量、私有构造方法、私有的clone、私有的wakeup; 公有的获取实例方法)
* 用途:数据库的连接(不断的创建实例会浪费资源,消耗性能;一个实例还存在,可以继续使用,不需要再次创建)、锁定文件
* @author new1024kb
* @link https://github.com/Echo-Mr-Pengw/Design-Pattern
* @since 2019-12-26
*/
//终结类,防止被继承
final class SingletonMode {
/**
* [$instance 私有的实例变量]
* @var [string]
*/
private static $instance;
/**
* [__construct 私有的构造方法,防止类的实例化]
*/
private function __construct() {}
/**
* [__clone 私有的 克隆魔术方法,防止对象的clone]
* @return [type] [description]
*/
private function __clone() {}
/**
* [__wakeup 私有的 反序列化魔术方法]
*/
private function __wakeup() {}
/**
* [getInstance 获取实例的静态方法,只能通过此方法获取实例]
* @return [object] [对象实例]
*/
public static function getInstance() {
if(self::$instance) {
return self::$instance;
}
return new self;
}
}
var_dump(SingletonMode::getInstance())