您现在的位置是:网站首页 > 心得笔记
常用设计模式之单例
简介本文将记录常用设计模式之单例
设计模式原则
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.日志系统:日志系统通常要求在全局中唯一的实例来记录应用程序的运行日志。
通过单例模式,日志系统的实例能被整个应用共享,保证每条日志都统一记录在唯一的实例中。
上一篇:oop编程思想和psr规范
下一篇:常用设计模式之工厂