您现在的位置是:网站首页 > 心得笔记

常用设计模式之单例

盛悦2025-02-2189人围观
简介本文将记录常用设计模式之单例

设计模式原则

1.总原则:开闭原则

开闭原则:对扩展开放对修改封闭。在程序需要扩展的时候,不能修改原有代码,而是要扩展原有代码。

2.单一职责原则

每个类应该实现单一的职责,如若不然,就应该把类拆分。
单一职责原则是实现高内聚、低耦合的指导方针。

3.里氏替换原则

通俗的讲,里氏替换原则就是用父类的地方就可以替换成子类,子类可以扩展父类的功能,但不能改变父类原有的功能。

4.依赖倒置原则


5.接口隔离原则

使用多个专门的接口,而不使用单一的总接口,即客户端不应该依赖那些它不需要的接口。

单例模式定义

单例模式,顾名思义就是只有一个实例。单例模式确保某一个类只有一个实例,不能重复实例,它只能自己实例化,而且向整个系统提供这个
实例。

单例模式特点

要实现一个类只实例化一次,就必须堵住其他实例化的入口。

三私一公。
1.私有化静态属性,存储实例化后的对象
2.私有化构造函数,防止外部代码通过new创建实例
3.私有化克隆方法,防止外部代码通过clone创建实例
4.公有化静态方法,实例化该类本身,只实例化一次

单例模式代码

class DatabaseConnection
{
	//私有化静态变量保存唯一实例
	private static $instance = null;
	//私有化构造函数-防止外部代码通过new创建实例
	private function __construct()
	{
	}
	//私有化克隆方法-防止外部代码通过克隆创建实例
	private function __clone()
	{
	}
	//公共的静态方法获取唯一实例,实例化该类本身,只实例化一次
	public static function getInstance()
	{
		if (self::$instance === null) {
			self::$instance === new self()
		}
		return self::$instance 
	}
}
	

单例模式使用场景

1.数据库 redis 等三方库的连接
2.日志系统:日志系统通常要求在全局中唯一的实例来记录应用程序的运行日志。
通过单例模式,日志系统的实例能被整个应用共享,保证每条日志都统一记录在唯一的实例中。