阐述企业搭建网站的重要性,网站关键词优化代码,php网站设置如何使用,杭州网站建设caiyiduo文章目录 前言介绍实现单例模式优缺点#xff1f;后言 前言 hello world欢迎来到前端的新世界 #x1f61c;当前文章系列专栏#xff1a;前端设计模式 #x1f431;#x1f453;博主在前端领域还有很多知识和技术需要掌握#xff0c;正在不断努力填补技术短板。(如果出… 文章目录 前言介绍实现单例模式优缺点后言 前言 hello world欢迎来到前端的新世界 当前文章系列专栏前端设计模式 博主在前端领域还有很多知识和技术需要掌握正在不断努力填补技术短板。(如果出现错误感谢大家指出) 感谢大家支持您的观看就是作者创作的动力 介绍 单例模式是一种创建型设计模式它确保一个类只有一个实例并提供一个全局访问点。这种模式常用于需要全局访问点的情况比如配置信息、日志记录器、线程池等。 单例模式的案例
日志记录器在一个系统中只需要一个日志记录器来记录系统的运行日志这时就可以使用单例模式保证该日志记录器的唯一性。
数据库连接池在许多应用中都需要对数据库进行操作为了提高性能和效率通常会使用数据库连接池。通过单例模式可以确保整个应用程序中只有一个数据库连接池实例。
配置信息类很多应用程序都需要读取配置信息比如数据库连接信息、系统参数等。使用单例模式可以确保配置信息类的唯一性并且方便全局访问。
线程池在多线程编程环境下线程池被广泛应用以提高性能和减少资源消耗。通过单例模式可以确保整个应用程序中只有一个线程池实例。
计数器有时候需要对某个对象进行计数比如统计网站访问量或者某个资源的使用次数这时可以使用单例模式确保计数器的唯一性。
实现单例模式
// 单例构造器
const FooServiceSingleton (function () {// 隐藏的Class的构造函数function FooService() {}// 未初始化的单例对象let fooService;return {// 创建/获取单例对象的函数getInstance: function () {if (!fooService) {fooService new FooService();}return fooService;}}
})();实现的关键点有
使用 IIFE创建局部作用域并即时执行getInstance() 为一个 闭包 使用闭包保存局部作用域中的单例对象并返回。 我们可以验证下单例对象是否创建成功
const fooService1 FooServiceSingleton.getInstance();
const fooService2 FooServiceSingleton.getInstance();console.log(fooService1 fooService2); // true优缺点
优点
划分命名空间减少全局变量增强模块性把自己的代码组织在一个全局变量名下放在单一位置便于维护且只会实例化一次。简化了代码的调试和维护
缺点
由于单例模式提供的是一种单点访问所以它有可能导致模块间的强耦合从而不利于单元测试。无法单独测试一个调用了来自单例的方法的类而只能把它与那个单例作为一 个单元一起测试
后言 创作不易要是本文章对广大读者有那么一点点帮助 不妨三连支持一下您的鼓励就是博主创作的动力