在PHP中是否有用于数据库访问的单例的用例?

在PHP中是否有用于数据库访问的单例的用例?,第1张

在PHP中是否有用于数据库访问的单例的用例?

好的,当我刚开始我的职业生涯时,我想了一下。以不同的方式实现它,并提出了两个选择不使用静态类的理由,但它们是相当大的。

一种是,您会发现很多时候,您绝对可以确定自己永远不会有一个以上的实例,而最终又会有一个实例。您可能最终会得到第二个监视器,第二个数据库,第二个服务器(无论如何)。

发生这种情况时,如果您使用静态类,则与使用单例相比,您的重构困难得多。单例本身就是一个不稳定的模式,但是它很容易转换为智能工厂模式-
甚至可以转换为使用依赖注入而不会带来太多麻烦。例如,如果您的单例是通过getInstance()获得的,则可以轻松地将其更改为getInstance(databaseName)并允许多个数据库-
无需更改其他代码。

第二个问题是测试(老实说,这与第一个问题相同)。有时您想用模拟数据库替换数据库。实际上,这是数据库对象的第二个实例。使用静态类比单例要困难得多,您只需要模拟getInstance()方法,而不是模拟静态类中的每个方法(在某些语言中可能会非常困难)。

这实际上归结为习惯-当人们说“全球”很糟糕时,他们有很好的理由这么说,但是在您亲自解决问题之前,它可能并不总是显而易见的。

您可以做的最好的事情是(像您一样)提出问题,然后做出选择并观察决定的后果。与一开始就正确地掌握代码相比,掌握随着时间的推移解释代码演变的知识更为重要。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5151402.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存