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以無縫方式返回的對象類型的選擇?