我正在处理一个简单的抽象数据库类。在使用这个类时,我希望有一些实例是独立的。我想拥有一个非单例的抽象类,然后将它扩展到另一个抽象类,即单例类。这个是可能的吗?推荐?
编辑:我想有两个抽象的,实际上是相同的,除了一个是单例。因此,唯一的区别将是,一个将拥有另一个的所有功能,但将有其他的属性和方法,使其行为像一个单例。
为此,我希望有一个基类代码库,因此在进行更改时,我不需要保持两个文件保持同步。
发布于 2010-05-07 18:24:45
在我做事的方式上,我认为抽象的独生子女是没有用的。这是因为
1)您想要成为单个实例的是您实例化的应用程序中使用的最后一个类,不管它是一个库、模型、控制器或视图,而不是抽象的。
2)加入单例方法简单,可写成8行。见下文。
protected static $_instance;
public static function getInstance()
{
if (!isset(self::$_instance)) {
self::$_instance = new self();
}
self::$_instance;
}3)以下版本的PHP5.3不支持后期静态绑定。这将导致实例化抽象类而不是继承它的最后一个类,并且不会像Gordon和nuqqsa所提到的那样发挥预期的作用。因此,为了向后兼容性,最好避免它。
发布于 2010-05-07 15:13:35
单例模式的实现必须满足两个要求:
。
只要提供了,变体就会是多个。如果需要的话,将类抽象从另一个抽象中扩展是没有错的。但是,正如@Gordon所说,要注意重写静态方法/属性会导致PHP < 5.3中的特殊行为。
https://stackoverflow.com/questions/2789328
复制相似问题