Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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
Oop 每个门面都应该作为单体实现吗?_Oop_Architecture_Singleton_Design Patterns - Fatal编程技术网

Oop 每个门面都应该作为单体实现吗?

Oop 每个门面都应该作为单体实现吗?,oop,architecture,singleton,design-patterns,Oop,Architecture,Singleton,Design Patterns,在Facade和Singleton的描述中,您可以看到:“Facade通常作为Singleton实现” 我想知道什么时候应该将Facade实现为singleton,什么时候是一个坏主意。否。通常实现Facade是因为调用起来更容易,但它有几个缺点(从中添加): 代码耦合 默认情况下不安全 不可测试 链接的一个好(坏)点是,它承载整个应用程序的生命周期,因此它永远不会被处理。如果无法从调用者处进行控制,则可能是不好的 特别适用于框架组件。那么什么时候应该作为单例实现呢?你的答案表明它永远不应该是单

在Facade和Singleton的描述中,您可以看到:“Facade通常作为Singleton实现”


我想知道什么时候应该将Facade实现为singleton,什么时候是一个坏主意。

否。通常实现Facade是因为调用起来更容易,但它有几个缺点(从中添加):

  • 代码耦合
  • 默认情况下不安全
  • 不可测试
  • 链接的一个好(坏)点是,它承载整个应用程序的生命周期,因此它永远不会被处理。如果无法从调用者处进行控制,则可能是不好的


    特别适用于框架组件。

    那么什么时候应该作为单例实现呢?你的答案表明它永远不应该是单例。当你遵循坚实的原则和TDD时,就永远不要做单例。正如这个答案所述:,singleton只解决1个问题,也就是说,如果您只需要一个live实例(比如日志记录)。