首页 / 知识
关于不可知的语言:单例有什么问题?
2023-04-16 19:02:00

What's wrong with singleton?不要在这个问题上浪费时间。 跟进:单身人士有什么不好?
Singleton使用不当可能会引起大量油漆。 您在单例中遇到了什么问题? 这种模式的常见误用是什么? 在深入研究Corey的答案之后,我发现了一些有关该主题的精彩文章。
看到这个线程 有时,它可以使您的代码更紧密地结合在一起,而单例类则通过名称直接从代码库的不同部分进行引用。因此,例如,当您需要测试代码的某些部分并且它从代码的不同部分引用了一个单例时,您就无法轻松地通过模拟对象伪造该依赖关系。 Singleton模式本质上没有错。它是一种工具,有时应使用。 我没有像其他海报那样接触过Singleton,但是我看到的(在C#中)几乎所有实现都可以通过静态类/方法来实现。我想您可能会认为静态类是单例模式的实现,但这不是我所看到的。我一直看到人们在真正需要的只是使用static关键字时建立并管理这些Singleton类/对象。 因此,我不会说Singleton模式不好。我会说这有点像枪支。我认为枪支并不坏,但可以肯定可以适当地使用它们。 本身没有任何问题,并且作为一种模式,它在认识到某些对象只能创建一次的必要性中起着至关重要的作用。 它经常用于委婉表达全局变量,以避开全局变量的污名,而这种用法天生就是错误的。如果全局变量恰好是正确的解决方案,则使用单例将无法改善它。如果使用全局变量不正确(很常见),则将其包装为单例将不会使其更正确。 原始GoF设计的一个基本问题是,析构函数不受保护。任何引用单例实例的人都可以随意销毁单例。 请参阅John Vlissides在他的书" Pattern Hatching"中更新的" To Kill Singleton"(亚马逊链接)。 干杯, 抢 基本上,单例是拥有静态数据并假装它不是真正静态的方法。 我当然会使用它,但请尽量不要滥用它。 我认为可能更合适的问题是:在什么情况下使用SIngleton模式不合适?或者您看到了哪些使用不应该使用的Singleton。 我看到的大多数单例模式不是以线程安全的方式编写的。如果书写正确,它们会很有用。 |
最新内容
相关内容
linux常用命令c语言?
linux常用命令c语言?,系统,工作,信息,管理,基础,命令,地址,目录,简介,时间,linux常用的20个命令?系统管理相关命令:df、top、free、quota、at、linux命令行模式登录?
linux命令行模式登录?,系统,密码,信息,状态,情况,终端,环境,管理,电脑,位置,linux,按了ctrl+alt+F1,进入了类似纯命令行的界面,让输入login信linux退出命令模式?
linux退出命令模式?,状态,档案,命令,环境,密码,终端,文件,模式,编辑,端口,linux退出vi编辑命令先按ESC进入Command模式,然后输入“:wq”,回车就可linux命令模式加行?
linux命令模式加行?,工作,地址,系统,命令,工具,正规,信息,时间,第一,模式,Linux下vim编辑器命令大全杀死进程killvi命令vi/vim是linux最常用的linux命令行模式使用?
linux命令行模式使用?,工作,地址,目录,信息,名称,系统,管理,命令,文件,标准,linux常用命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出linux命令行设置语言?
linux命令行设置语言?,系统,管理,环境,国家,工具,电脑,软件,文化,底部,语言,linux命令行下怎样改变语言1、将内容改为:LANG=zh_CN.UTF-8LANGUAGlinux使用命令改语言?
linux使用命令改语言?,系统,工作,管理,电脑,设备,字符集,中文,命令,语言,虚拟机,请问linux虚拟机装好以后怎么把英文改成中文?1、vmware设置中c语言写linux命令?
c语言写linux命令?,系统,工具,代码,智能,工作,环境,情况,位置,命令,文件,如何在C语言编程中调用linux系统终端下的命令1、C语言有一个system函linux切换成命令模式?
linux切换成命令模式?,密码,系统,工具,模式,命令,首页,状态,图形界面,终端,界面,Linux切换命令模式与GUI模式命令行→图形 startx 注:图形界面linux命令行模式清页?
linux命令行模式清页?,工作,系统,命令,信息,地址,目录,内容,文件,操作,功能,linux常用命令linux系统常用操作命令如下:ls:全拼list,功能是列出目linux汇编语言命令?
linux汇编语言命令?,系统,地址,代码,数据,网络,平台,平均,位置,灵活,工作,汇编语言指令的基本格式是什么1、有以下几种基本格式:标号,又称为指令linux进入命令行模式?
linux进入命令行模式?,系统,地址,情况,工作,命令,终端,首页,信息,目录,界面,linux怎么进入字符命令界面??1、打开linux系统,在linux的桌面的空