【发布时间】:2011-01-30 11:09:11
【问题描述】:
根据PHP manual,这样一个类:
abstract class Example {}
无法实例化。如果我需要一个没有实例的类,例如对于注册表模式:
class Registry {}
// and later:
echo Registry::$someValue;
将类简单地声明为抽象会被认为是一种好的风格吗?如果不是,与抽象类相比,将构造函数隐藏为受保护方法有什么优势?
提问的理由:在我看来,这可能有点滥用功能,因为手册中提到的抽象类更像是稍后具有实例化可能性的类的蓝图。
更新:首先,感谢大家的回答!但许多答案听起来很相似:“你不能实例化一个抽象类,但对于注册表,为什么不使用单例模式?”
不幸的是,这或多或少完全重复了我的问题。与仅声明 abstract 而不必担心这一点相比,使用单例模式(又名隐藏 __construct())有什么优势? (例如,abstract 类实际上并没有使用左右,这是开发人员之间的一种强烈含义。)
【问题讨论】:
-
你能回顾一下我的帖子吗,我想我已经提到了一个明显的优势。
-
感谢您的所有回答!不幸的是,赏金的结束是在相当忙碌的时候,所以我无法对答案做出反应,因为这是他们应得的。我终于接受了帕斯卡的回答,因为这是第一次,而且在他的编辑之后也似乎是最全面和最完整的。但是,我阅读了所有内容并学到了很多东西。
-
我想知道是谁发了所有的-1。需要解释一下吗?