【发布时间】:2014-08-13 13:40:12
【问题描述】:
我正在处理一个项目,其中我有一个代表客户订单的Order class。
具有管理订单(如更改状态)和获取订单详情(如发票详情)的功能
我正在创建一堆类,将订单转移给我们的各个合作伙伴。
所以我有这样的课程:
class PartnerXOrder extends Order
class PartnerYOrder extends Order
在同行评审期间,一位同事建议我不应该扩展 Order,而是将其作为班级成员:
Class PartnerXOrder
{
private $orderObj;
function __construct()
{
$this->orderObj = new Order();
}
}
虽然我们确实讨论了一点,但我不太明白这种方法比扩展类有什么优势。很明显,其中之一是合作伙伴类将来需要扩展另一个类 - 但根据我们当前的架构,这根本不可能。
有人能解释一下吗? - 还是我的同事错了?
【问题讨论】:
-
嗯,是你的
PartnerXOrder类aOrder吗?它是否属于同一层次结构?在某些(或所有)情况下,Orders 可以替代PartnerXOrders 吗?还是您只是为了方便而扩展类? -
@deceze -
PartnerXOrder有很多功能可以将订单转移到PartnerX...所以从技术上讲-Order是实际的客户订单详情。而PartnerXOrder是添加到 Order 以促进传输的附加功能 - 这就是为什么我认为扩展是有意义的。 -
问问自己你是否曾经使用过
PartnerXOrder而不是Order。你会将PartnerXOrder的实例传递给function (Order $order)吗?还是这两个完全不同的功能需要两种完全不同的类型?
标签: php class oop object inheritance