0
对不起,我不能提出一个更具描述性的标题。我的问题是以下。假设您有两个类A和B,并且您知道有时可能会发生某些代码尝试实例化类型A的对象时,实际需要的是类型B的对象。点是代码来决定哪个一个是正确的对象,自然属于A类而不是客户端代码。让对象决定它的类
在JavaScript的(好吧,JS没有类,但它使点清晰),你可以简单地做
function A() {
if(some_condition) {
return new B();
}
//else we proceed to customize and return our object
}
我想做的事情在PHP中类似的事情。我能想出的最好的事情是
class A {
private function __construct() {
//whatever you need to do
}
public static function getInstance() {
if(some_condition) {
return new B();
}
else {
return new A();
}
}
}
的问题是,客户端代码将始终要知道,一个是特殊的,你有一个静态方法来实例化对象。
是否有一种方法可以委托给A以无缝方式返回的对象类型的选择?