2010-10-08 65 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