【发布时间】:2010-12-13 21:15:11
【问题描述】:
我有一个类,它具有从数据库中检索子元素的功能。以下代码将是相当伪的,因为我想让它尽可能简单。
abstract class SomeHostObject extends SomeObject {
function getChild($identifier) {
global $database;
$id = $database->select('Some MySQL Query');
// that is the problem
return ?new? ???($id);
}
}
如您所见,SomeHostObject 类是抽象的,必须扩展。
问题是getChild() 不应该返回一个SomeHostObject 实例(不仅因为它甚至不能被实例化),而是一个扩展SomeHostObject 的类的新实例。
例如,如果有一个扩展 SomeHostObject 的类 PageObject,则函数 getChild() 应该返回一个具有新 ID 的新 PageObject 实例。
我不知道是否称这个问题为“高级”,但对我来说这是一个大问题。
【问题讨论】:
-
所以你想建立一个工厂? en.wikipedia.org/wiki/Factory_method_pattern
-
刚刚查了一下。是的,它就像一个工厂。感谢您介绍该术语!
标签: php class inheritance polymorphism