TA贡献1863条经验 获得超2个赞
在我寻求真相的过程中,我发现使用Singleton的理由实际上很少。
Internet上一次又一次出现的原因之一是“日志”类(您提到过)。在这种情况下,可以使用Singleton来代替类的单个实例,因为项目中的每个类通常都需要反复使用日志类。如果每个类都使用此日志类,则依赖项注入将变得非常麻烦。
日志记录是“可接受的”Singleton的一个具体示例,因为它不影响代码的执行。禁用日志记录,代码执行保持不变。启用它,同样的。Misko把它放在下面的方式单身的根本原因“这里的信息有一种方式:从应用程序到记录器。即使记录器是全局状态,因为没有从记录器流向应用程序的信息,记录器也是可以接受的。”
我相信还有其他合理的理由。亚历克斯·米勒,在“我讨厌的模式,谈到服务定位器和客户端UI也可能是“可接受的”选择。
在辛格尔顿读更多我爱你但你让我失望了。
TA贡献1777条经验 获得超10个赞
单身候选人必须满足三项要求:
如果建议的Singleton只有一两个这样的需求,那么重新设计几乎总是正确的选择。
例如,不可能从多个地方(打印菜单)调用打印机假脱机程序,因此可以使用互斥来解决并发访问问题。
一个简单的记录器是一个可能有效的Singleton的最明显的例子,但是这可以随着更复杂的日志记录方案而改变。
TA贡献1780条经验 获得超5个赞
当您需要管理共享资源时,可以使用单例。例如,打印机假脱机程序。您的应用程序应该只有一个假脱机程序实例,以避免对同一资源的冲突请求。
或数据库连接或文件管理器等。
设计模式深度解析34讲
¥ 68.00
举报
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号