2010-03-23 82 views

回答

10

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

以建模人员列表为例。如果您决定创建一个Person类,那么您将不允许您的模型拥有多个人。

1

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

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

8

如果你所有的类都是单身人士,为什么要使用类?

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

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

所以,如果所有的类都是单身,我会退后一步,问了几个问题:

  • 你需要的课?
  • 您是否正确思考了您的软件如何模拟您正在尝试解决的问题?
1

这似乎是一个非常糟糕的主意。我建议在会话(如果是每个用户)或缓存(如果是每个服务器)之间保留你需要的任何数据。至于内存的使用情况,它不应该使有很大不同。

0

其实它是(结合工厂),以Kohana 3 Framework为例;

它使用单件/工厂组合,只要有可能。

0

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

单身人士,虽然他们可以被扩展和抽象,通常不是基本上把OOP好东西放在你的范围之外。这将是一些原始程序化编程与全球范围内的所有命名空间。

相关问题