2009-06-03 35 views
0

我仍然是一個新手,當涉及到多態性,所以我希望我能正確地說我的問題。OO設計:從父母返回一個孩子班

比方說,我有我的數據庫中的表 - 狗,貓和鼠標。我希望能夠調用是這樣的:

$animal = new Animal("dog", 12); 

與動物類是這樣的:

class Animal { 
    protected $id; 
    protected $legs; 
    protected $height; 
    function __construct($type, $id) { 
    if ($type == "dog") { 
     return new Dog($id); 
    } 
    } 
} 

class Dog extends Animal { 
    function __construct($id) { 
    $this->id = $id; 
    $this->legs = 4; 
    $this->height = 1; 
    } 
} 

這並不工作,但我希望能夠調用一個新的動物和通在特定的動物中,並將其退回。我怎麼設計這個? (我使用PHP)。

回答

0

我不知道PHP的,但如果它可以幫助你在談論被稱爲

嘗試搜索「四廠邦」爲模式的解釋設計模式。

然後嘗試搜索「PHP工廠模式實現」

2

你想要的是一個 「工廠模式」。不要直接創建新的Animal,請調用一個選擇要創建的動物類型的函數。在Java中,我可能會創建一個類的靜態方法,並且在Python中,我會將所有Animal類存儲在鏈接到該鍵的字典中,以便查找關鍵字,然後將參數傳遞給構造函數。

對於PHP,我找到一篇關於Using the Factory Pattern in PHP的文章。

相關問題