何时使用委托而不是继承?

Cug*_*uga 47 oop inheritance delegation

有人可以解释我什么时候想使用委托而不是继承?

Anz*_*rio 61

当您想要"复制"/公开基类的API时,您可以使用继承.如果您只想"复制"功能,请使用委托.

例如:您想要从列表中创建堆栈.堆栈只有pop,push和peek.鉴于您不希望在堆栈中使用push_back,push_front,removeAt等等功能,因此不应使用继承.

  • 好的经验法则. (3认同)

S.L*_*ott 26

他们彼此无关.授权是一种行为.继承是一种模型技术.

继承用于建模"is-a".计算机"是一个"电子系统.

授权是方法如何提供结果.有时,一个对象会将工作委托给另一个对象.委托可以通过任何关系 - 您可以委托给超类,复合或聚合的成员,或任何关系.

  • 国际海事组织声称"他们彼此无关"是一种夸大其词.在创建模型时,是否使用"是一个"而不是"有"关系通常是一个难题.特别是因为所有"都是"关系可以被建模为"有"关系.Go语言甚至没有完全依赖委托进行代码重用的经典继承. (9认同)
  • 继承用于建模"is-a"关系,但也是子类扩展基类功能的地方,并且不做任何限制. (3认同)