单例模式
- 单例模式的目的是在应用程序调用的时候,只能获取一个对象实例,避免每次都new一个实例,减少资源消耗。常见于数据库链接。但是单例模式是一个公认的反面模式,为了获取更好的可测试性和可维护性,可以使用
依赖注入
。
- 代码
<?php
namespace DesignPatterns\Creational\Singleton;
final class Singleton
{
/**
* 单例的属性要是静态属性
*
*/
private static $instance;
/**
* 通过懒加载获得实例(在第一次使用的时候创建)
*/
public static function getInstance(): Singleton
{
if (null === static::$instance) {
static::$instance = new static();
}
return static::$instance;
}
/**
* 不允许从外部调用以防止创建多个实例
* 要是用单例,必须使用 Singleton::getInstance() 方法获取实例
*/
private function __construct()
{
}
/**
* 防止实例被克隆(这回会创建实例的副本)
*/
private function __clone()
{
}
/**
* 防止反序列化(这将创建它的副本)
*/
private function __wakeup()
{
}
}
网友评论