将类对象作为成员而不是继承类


Having class object as a member instead of inheriting the class

我正在处理一个项目,其中我有一个代表客户订单的Order class

它具有管理订单(如更改状态)和获取订单详细信息(如发票详细信息)的功能

我正在创建一堆类,这些类将把订单传递给我们的各个合作伙伴。

我有这样的类:

class PartnerXOrder extends Order
class PartnerYOrder extends Order

在同行评审期间,一位同事建议我不应该扩展Order,而是将其作为类成员:

Class PartnerXOrder
{
   private $orderObj;
   function __construct()
   {
      $this->orderObj = new Order();
   } 
}

虽然我们确实讨论了一下,但我不太明白这种方法比扩展类有什么优势。很明显,一个是万一将来伙伴类需要扩展另一个类——但基于我们当前的体系结构,这根本不可能。

有人能解释一下吗?——还是我的同事错了?

我正在创建一堆类,将把的订单传递给我们的各个合作伙伴。

你的同事是对的。基本上,为了回答这个问题,我的类应该继承这个吗?,问你自己:我的班级Y是一个X吗?(其中X是你的父班级的名称)

在你的情况下,是PartnerXOrderOrder ?正如你所说,不:它的目的是将Order转移到Partner