2010-10-08 66 views
4

我有一個多種產品類型的電子商店。我會想到以下結構PHP OOP結構問題,模擬多重繼承

Cart_Item 
-- Cart_Product 
-- Cart_Download 

Order_Item extends Cart_Item 
-- Order_Product 
-- Order_Download 

問題是,我想有Order_Product擴展Order_Item和Cart_Product。 這是因爲它需要Order_Item的方法通用(從訂單不是從產品獲得價格),但也從Cart_Product(航運計算)的方法

我知道PHP不支持多繼承,我徘徊什麼是最乾淨的模仿這種方式。

現在我有Order_Product擴展Cart_Product重複代碼Order_Item在Order_Product一個Order_Download。

+1

@戈登謝謝你的回答,我用過作文。謝謝 – 2010-11-02 09:39:47

回答

12

可以使用Interfaces並通過手動或通過Strategies實施方法。或者使用Composition而不是繼承,這意味着您讓Order_Product具有Order_ItemCart_Product

在旁註上:您也可以考慮將「運輸計算」放入自己的Service類中,您可以將相應的Product實例傳遞給它。

+1

+1接口是要走的路。 – NullUserException 2010-10-08 09:11:49

+1

比繼承更喜歡構圖,除非你有一個非常好的理由不要:http://gackoverflow.com/questions/49002/prefer-composition-over-inheritance – Guillaume 2010-10-08 09:12:31

+0

+1,你,戈登;) – 2011-06-25 11:33:14