Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.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
Design patterns 如何在不使用静态/全局变量的情况下实现单例?可能的_Design Patterns_Singleton - Fatal编程技术网

Design patterns 如何在不使用静态/全局变量的情况下实现单例?可能的

Design patterns 如何在不使用静态/全局变量的情况下实现单例?可能的,design-patterns,singleton,Design Patterns,Singleton,如何在不使用静态/全局变量的情况下实现单例?可能吗 这是一个面试问题…不。您需要一个存储单例的位置。将单例存储在一个文件中。依赖注入是一种可能性。由于您的问题并不特定于任何编程语言,因此我不会发布特定于框架的语法(如Ninject)您为什么要使用静态全局变量?只要您正确地使用singleton方法,就可以了。使用DI,您只是将存储从静态变量转移到DI容器。而且,您正在失去很多单例的好处——强制的单实例。有了DI,您就依赖于用户始终使用DI框架,该框架可以在内部强制执行单实例规则,但不能阻止DI之

如何在不使用静态/全局变量的情况下实现单例?可能吗


这是一个面试问题…

不。您需要一个存储单例的位置。

将单例存储在一个文件中。

依赖注入是一种可能性。由于您的问题并不特定于任何编程语言,因此我不会发布特定于框架的语法(如Ninject)

您为什么要使用静态全局变量?只要您正确地使用singleton方法,就可以了。使用DI,您只是将存储从静态变量转移到DI容器。而且,您正在失去很多单例的好处——强制的单实例。有了DI,您就依赖于用户始终使用DI框架,该框架可以在内部强制执行单实例规则,但不能阻止DI之外的代码创建其他实例。作为对面试问题的回答,这本身更像是“让我们看看应聘者的想法”,这很好。@akf,对于面试,能够解释提议方法的积极和消极方面是很重要的。同意你的观点。因为最初的问题更多的是关于实现Singleton的方法,所以我建议这是一种可能性。然而,事实仍然是,没有什么可以阻止我跳过依赖注入框架并创建类的实例。