0
我有一個搜索類,用於從兩個不同的來源獲取結果並將它們組合在一起。搜索類是父級,並有兩個擴展搜索的子A和B.用父對象構造一個子類是不好的做法嗎?
在Search類中,我有一個名爲fetch()的方法,它實例化兩個子對象以獲取其結果。它看起來是這樣的:
public function fetch(){
$a = new A($this);
$a_results = $a->fetch();
$b = new B($this);
$b_results = $b->fetch();
// code to combine the results here
}
類和B類的構造函數都這個樣子:
class A extends Search
{
public function __construct(Search $search){
parent::__construct($search->category, $search->offset, $search->keywords...);
}
這感覺就像我做錯事在我傳遞一個父對象給一個孩子,然後用完全相同的數據創建另一個父對象。有沒有更好的方法來設置它?
我有這樣設置,因爲我的應用程序的某些部分需要直接訪問類A和B,而不是通過父級搜索類。
做A和B都實現了獲取方法嗎?如果不是,則會導致無限循環。看起來,擴展搜索並不是你真正想要的,相反,A和B類應該簡單地將搜索對象作爲它們的__construct參數來使用搜索對象的屬性。 – localshred 2009-08-19 23:23:53
是的,A和B都有具有不同邏輯的fetch()方法。也許,A和B不需要擴展搜索,但它們使用相同的成員和構建對象所需的相同方法,因此,對我來說,擴展搜索是有意義的。 – 2009-08-19 23:39:11
你說得對,以這種方式擴展搜索類是毫無意義的。我只需要傳遞搜索對象,然後訪問它的屬性。如果你把這個答案放在答案中,我可以將其標記爲公認的解決方案。 – 2009-08-20 16:25:03