应用场景
实际项目中像数据库查询,日志输出,全局回调,统一校验等模块。
这些模块功能单一,但需要多次访问,如果能够全局唯一,多次复用会大大提升性能。这也就是单 例存在的必要性(我们希望整个应用只实例化一次
)
单例模式的好处:
1:减少频繁创建,节省了cpu。
2:静态对象公用,节省了内存。
3:功能解耦,代码已维护
PHP实现
/**结构:
* 3私1公
* 私有化构造方法:防止使用 new 创建多个实列
* 私有化克隆方法: 防止clone多个实列
* 私有化静态属性:防止直接访问存储实列的属性
* //
class Db
{
private static $instance = null;
public static function getInstance()
{
//检测当前类属性$instance是否已经保存了当前类的实例
if (is_null(self::$instance)) {
//如果没有,则创建当前类的实例
self::$instance = new self();
}
//如果已经有了当前类实例,就直接返回,不要重复创建类实例
return self::$instance;
}
/**
* 防止 new 多个实例
* Db __constructor.
*/
private function __construct()
{
}
/**
* 防止clone 多个实例
*/
private function __clone()
{
}
}
//使用
$db = Db::getInstance();