PHP OOP结构问题,模拟多重继承

时间:2010-10-08 09:01:44

标签: php oop multiple-inheritance

我有一个包含多种产品类型的电子商店。我会想到以下结构

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_Produ来自Order_Item的重复代码在Order_Product和Order_Download。

1 个答案:

答案 0 :(得分:12)

使用Interfaces并手动或通过Strategies实施这些方法。或者使用Composition代替继承,这意味着您让Order_Product拥有Order_ItemCart_Product

在旁注中:您还可以考虑将“运费计算”纳入其自己的Service类,您可以将适当的Product实例传递给。