是不是很好,每个PHP类都实现了一个Singleton模式

时间:2010-03-23 14:48:44

标签: php design-patterns singleton

是不是很好,每个PHP类都实现了一个Singleton模式?我认为,因为它会减少内存使用量。这是正确的意见吗?谢谢!

6 个答案:

答案 0 :(得分:10)

软件旨在模拟现实。这就是OOP存在的方式。说,辛格尔顿不是所有指甲的锤子。您可以在某些型号中使用它,但还有其他型号无法调整。

例如,为人员列表建模。如果您决定创建Person类,则不允许您在模型上拥有多个人。

答案 1 :(得分:8)

如果你的所有课程都是单身,为什么要使用课程?

单身人士在某些情况下很有用,但往往过度使用。如果你可以逃脱单身,那么你可能不需要用于其预期的面向对象用途的类。但它们仍然可用于代码模块化。

通常,当您拥有该类的多个实例时,类最有用。类是对象的蓝图,因此您可以创建许多具有相似行为的对象,但通常是不同的内部状态。

所以,如果你所有的课程都是单身人士,我会退一步问几个问题:

  • 你需要上课吗?
  • 您是否正确思考您的软件如何模拟您要解决的问题?

答案 2 :(得分:1)

有一个简单的规则:如果确定一个类只能使用一次,那就实现Singleton。如果需要多次使用,请不要这样做。

如果你的程序只有一个单一实例的类,它看起来像一个主要的代码气味,不适合面向对象的编程。

答案 3 :(得分:1)

这似乎是一个非常糟糕的主意。我建议在会话(如果是每个用户)或缓存(如果是每个服务器)中保留请求之间所需的任何数据。就内存使用而言,它不应该使 产生很大的差异。

答案 4 :(得分:0)

实际上它(与工厂结合),以Kohana 3 Framework为例;

它尽可能使用单件/工厂组合。

答案 5 :(得分:0)

有可能,它不会是OOP设计。 OOP是意味着以简化3个主要属性的结构:继承(即公共类共享相同的接口),多态(即子类化)和封装(即对对象使用黑盒方法)。

Singleton,虽然他们可以可以扩展和抽象,但通常不是这样,基本上不需要OOP好东西。它将是某种原始过程编程,其中所有内容都在全局范围内命名。