当我们在框架上下文中谈论它时,单例模式是否仍然不好?

时间:2016-08-30 10:31:05

标签: php laravel design-patterns singleton

使用单例模式通常是代码味道。

然而,似乎使用"单身"在像Laravel这样的框架中,很多问题都是流行的解决方案。

同样值得注意的是,在以下意义上,Laravel中的单身人士与单身人士课程并不完全相同:

  • 用作单身人士的班级没有意识到这一点,没有 那里有静态方法,也没有任何东西可以阻止你 从手动创建该类的新实例。
  • 使用Laravel单身时,容器会跟踪 你想用作单身的物品,并把它们交给你 请求。

我的理解是正确的,Laravel中所谓的单身人士实际上并不是一个单身人士,而是一个受单身人士模式启发的实施,因此并不像一个不好的做法那么多一个真正的单身人士,因为它摆脱了一些缺点(更难测试,全局状态......)?

这个问题与this question about design patterns in PHP松散相关,但我似乎可以创建一个单独的问题。

1 个答案:

答案 0 :(得分:0)

是的,它仍然很糟糕。它仍然是一种反模式。

事实上,你看到许多人诉诸于此,只是表明任何给定系统中的缺陷。它适用于应用程序,框架和库。

并说“我们的单身人士不同”是错的。而且,如果您正在编写正确的单元测试,那么您将在隔离中测试您的代码,而无需初始化框架的各个部分。

  

<子>的 P.S。
  你似乎对“代码味道”是错误的看法。代码气味就是当你有一个名为$a1$bzzzz的变量时,代码气味就是当你的函数有8个参数时。 Anit-pattern不是代码气味。这是建筑学中的一个错误。