『单例模式被公认为是 反面模式(Anti Pattern),建议弃用』如何理解?
8

原文:

THIS IS CONSIDERED TO BE AN ANTI-PATTERN! FOR BETTER TESTABILITY AND MAINTAINABILITY USE DEPENDENCY INJECTION!

这句话,感觉可以引申出不少东西了,有点难翻,不是很好理解,大家说说看法。

附上:什么是 ANTI-PATTERN —— https://learnku.com/docs/php-design-patterns/2018/anti-pattern

每天进步一点点

本帖已被设为精华帖!
本帖由 Summer 于 10个月前 加精
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 5

自己回复一下吧,感谢summer老大的翻译,第一句话是他翻的。
我理解是这样的:单例模式就可测试性而言,在做单元测试的时候,如果想去模拟一个单例,是做不到的,因为这个单例和真实业务中的单例是同样的,并不是像通常那些可以通过mock来实例化的假数据,它本身是个“真数据”,况且不看它的具体实现方式,我们也无法知晓如何去模拟它所依赖的那些数据。就可维护性而言,它自身掌握了自己的生命周期,管理了自己的依赖关系,我们拿到它的时候,它到底和哪些数据有关联,这个也无从知晓。

10个月前
Summer

@wilson_yang 我改了下标题和内容哈,文意不变,就是加了点信息,方便大家讨论。

同一段话,在 多例模式(Multiton) 下也有提及

10个月前

单例模式本质就是“全局”的,单例类如果有状态,就和全局变量一样难以维护。

10个月前

抛砖引玉。从六大设计原则的角度来看,它在一定程度上违背了单一职责原则,它既提供了工厂方法来生产它自己,同时在它内部又提供了业务类的方法,供使用者使用,将创建产品和使用产品耦合在一起。

10个月前

涨知识了,多谢楼主

10个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!