关于设计模式:我什么时候应该使用单身人士? [关闭]

淺唱寂寞╮ 提交于 2020-02-25 19:22:11

荣耀的全球变量 - 成为一个荣耀的全球阶级。 有人说打破面向对象的设计。

给我一些场景,除了好的旧记录器,使用单例是有意义的。


#1楼

1 - 对第一个答案的评论:

我不同意静态Logger类。 这对于实现来说是实用的,但它不能替代单元测试。 静态类不能被测试double替换。 如果你没有单元测试,你不会在这里看到问题。

2 - 我尽量不用手工制作单身人士。 我只是创建一个带有构造函数的简单对象,允许我将协作者注入到对象中。 如果我需要一个单例,我会使用依赖的inyection框架(Spring.NET,Unity for .NET,Spring for Java)或其他。


#2楼

当您从数据库或文件加载配置属性对象时,它有助于将其作为单例; 没有理由继续重新读取服务器运行时不会改变的静态数据。


#3楼

在实现State模式时可以使用Singleton(以GoF书中显示的方式)。 这是因为具体的State类没有自己的状态,并根据上下文类执行它们的操作。

您还可以将Abstract Factory设为单例。


#4楼

管理数据库的连接(或连接池)。

我还会用它来检索和存储外部配置文件的信息。


#5楼

您需要管理共享资源时使用单例。 例如打印机假脱机程序。 您的应用程序应该只有一个假脱机程序实例,以避免对同一资源的请求冲突。

或者数据库连接或文件管理器等。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!