使用单例模式通常是代码味道。
然而,似乎使用"单身"在像Laravel这样的框架中,很多问题都是流行的解决方案。
同样值得注意的是,在以下意义上,Laravel中的单身人士与单身人士课程并不完全相同:
我的理解是正确的,Laravel中所谓的单身人士实际上并不是一个单身人士,而是一个受单身人士模式启发的实施,因此并不像一个不好的做法那么多一个真正的单身人士,因为它摆脱了一些缺点(更难测试,全局状态......)?
这个问题与this question about design patterns in PHP松散相关,但我似乎可以创建一个单独的问题。
答案 0 :(得分:0)
是的,它仍然很糟糕。它仍然是一种反模式。
事实上,你看到许多人诉诸于此,只是表明任何给定系统中的缺陷。它适用于应用程序,框架和库。
并说“我们的单身人士不同”是错的。而且,如果您正在编写正确的单元测试,那么您将在隔离中测试您的代码,而无需初始化框架的各个部分。
<子>的 P.S。强>
你似乎对“代码味道”是错误的看法。代码气味就是当你有一个名为$a1
,$bzzzz
的变量时,代码气味就是当你的函数有8个参数时。 Anit-pattern不是代码气味。这是建筑学中的一个错误。