Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 所有类中的单例模式_Javascript_Php_Oop - Fatal编程技术网

Javascript 所有类中的单例模式

Javascript 所有类中的单例模式,javascript,php,oop,Javascript,Php,Oop,我有一个很快的问题。 我正在和我的朋友讨论单身模式。 他们说它不适合在所有的课程中使用,我有不同的观点。 这是真的吗?为什么不在所有类中使用它很重要? 这对我来说毫无意义。模式用于防止多次实例化,就是这样。问题是什么?简单的单例的主要“问题”是它使用静态访问器。这迫使您在对其使用属性或方法时按类名引用该单例。这称为对实现进行编码(与之相反)。随着体系结构的发展,它否定了体系结构中最有用的一个间接点:如果在应用程序的许多地方使用单例,那么最终会将类名分散得很广。如果您声明了一个接口并使用了它,并且

我有一个很快的问题。 我正在和我的朋友讨论单身模式。 他们说它不适合在所有的课程中使用,我有不同的观点。 这是真的吗?为什么不在所有类中使用它很重要? 这对我来说毫无意义。模式用于防止多次实例化,就是这样。问题是什么?

简单的单例的主要“问题”是它使用静态访问器。这迫使您在对其使用属性或方法时按类名引用该单例。这称为对实现进行编码(与之相反)。随着体系结构的发展,它否定了体系结构中最有用的一个间接点:如果在应用程序的许多地方使用单例,那么最终会将类名分散得很广。如果您声明了一个接口并使用了它,并且希望在以后更改类名,那么您只需要修改实例化实现的单行代码

当涉及到测试时,对接口进行编码变得尤为重要,在测试中经常需要将生产实现替换为测试实现,以便隔离客户端类行为


您仍然可以使用singleton。但是,您应该将它隐藏在接口后面,以便所有客户机都不需要知道它是单例。用于此。

如果您确实需要完全相同的实例,单例模式是有意义的。但是我无法想象在任何用例中,我只需要一个项目中每个类的一个实例(确切地说是一个实例)。在每个类中不使用单例模式时,程序是否会减慢速度?我的模式嗨,如果不这样做真的符合我的目的,我也不认为有任何问题,但是正如@MarkusSafar所说的,很少有项目中所有类都会毫无例外地遵循单例模式。Uaau!非常感谢你的回答。我并不这么认为。我制定了一个方案,并在使用原型时使用它。但单例模式总是包括在内。如果雇主知道你是一名初级开发人员,他会犯错误吗?我不完全确定你在问什么。但雇主是否认为单身汉“不好”取决于公司以及他们使用OO和单元测试的方式(如果有的话)。一些公司对快速编写代码更感兴趣,只在“雨天”处理架构。这类项目的中心往往有一窝单身汉。