【发布时间】:2019-12-25 21:09:49
【问题描述】:
我是 PHP 新手。我有三个类,比如A、B 和C,其中B 和C 直接继承自A。我的问题是,我需要一个静态工厂,比如 createInstance(),它为 A 类定义一次,并且适用于其后代。所以当有人调用A::createInstance()时,它返回一个A类型的对象,而调用B::createInstance()返回一个B的实例,C::createInstance()返回一个C的实例。我将以下代码放入类A 中的createInstance() 定义中:
public static function createInstance() {
return new self();
}
但这不能满足我的需求,因为self 总是指A 类,无论它被调用什么类。换句话说,调用B::createInstance() 和C::createInstance 总是返回A 类型的对象。如何创建这样一个返回适当类的对象的工厂方法?
【问题讨论】:
标签: php inheritance static-methods factory-pattern self