何时使用组合以及何时使用继承

艾哈迈德

有没有一种方法可以告诉何时在代码中使用合成以及何时使用继承。

例如:比方说,我们有4类调用ComputerMotherBoardMonitorKeyboard我可以使computer从其他三个类继承和我还可以声明MotherBoardMonitorKeyboard在领域computer,从而为使用组合物的第二种情况。哪种方法更好?大多数开发人员首选哪种方式?

尼古拉斯·查拉兰比迪斯

以下情况下,我更喜欢继承

  • 两个类都在同一个逻辑域中
  • 子类是超类的适当子类型
  • 对于子类,超类的实现是必需的或适当的
  • 子类进行的增强主要是累加的。

否则,该组合是适当的。

请注意,在这种情况下,计算机您列出的组件组成。作为捷径,我有时会问自己以下问题:

  • 是否Computer 一个Mouse如果是这样,则使用合成。请注意,计算机上没有鼠标。
  • MacBook一个Computer如果是这样,则使用继承。

...但是一般来说,首选哪种方式

一般而言,决定应根据情况而定:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

何时使用@RunWith以及何时使用@ExtendWith

何时使用定义以及何时使用让球拍

何时使用状态以及何时使用道具?

何时使用对象以及何时使用数组

何时使用断言以及何时使用异常

何时使用length以及何时使用length()

链接列表何时使用->以及何时使用。

在SQL中何时使用“ IS”以及何时使用“ =”

何时使用 $this 以及何时使用简单变量

关于何时撰写以及何时使用$的困惑

何时以及何时不使用role =“ button”

何时以及何时不使用Web服务?

何时以及为何使用JumboEnumSet

AngularJS-何时使用隔离范围以及何时使用服务

何时使用countByValue以及何时使用map()。reduceByKey()

Django:何时使用模型字段以及何时使用反向查询。

何时使用 MassTransit IRequestClient 以及何时使用 IBus.Send

Elixir:何时使用.ex以及何时使用.exs文件

何时在angularfire中使用uid以及何时使用$ id

何时使用通用方法以及何时使用通配符?

jQuery何时使用if语句以及何时使用函数?

何时使用线程以及何时使用线程池?

何时使用构造函数以及何时使用OnInit

何时使用“可选”依赖项以及何时使用“提供”范围?

何时使用.First以及何时将.FirstOrDefault与LINQ结合使用?

在 css 中何时使用填充以及何时使用边距

何时使用TableController <T>以及何时使用Custom DomainManager

何时使用自下而上的DP以及何时使用自上而下的DP

何时使用Apache Helix以及何时使用Apache Mesos