每次要引入新功能时都要避免使用新类?

时间:2015-03-10 16:58:48

标签: c++ delphi inheritance

在一个庞大复杂的应用程序中,我想知道为了实现一个简单的新功能而不引入一个类是否可以接受。

例如,C类和D类继承自A(在许多其他也继承自A的类中)。

如果我们想为C和D引入新的共享功能,我们可以:

1)在父类A和2个子类C和D之间引入一个新的类B(并在此类中实现共享功能),因此B继承自A,而C和D继承自B

2)在父类A中添加功能并添加一个标志,仅当子类型为B或C时才使用此功能(并确保这样我们不会破坏其他类的其他类继承自A)

(在delphi中我认为这个标志是一个已发布的属性,在对象检查器中可用,这使得在每个子类上包含或排除功能变得非常容易)

为了避免疯狂的多级复杂继承,遵循第二种方法是不好的做法吗?

1 个答案:

答案 0 :(得分:3)

  • 如果您想要新功能,最好为此目的创建新类。以后可以轻松修改功能。
  • 正如你所说,“其他班级也继承了A级”;可能是这些类不希望您添加到A类的功能。因此,最好创建单独的类。
  • 虽然在第二种方法中你创建了一个标志来决定是否使用这个功能,但我认为它是开销,可能会导致复杂性。

为单独的功能创建单独的类总是有帮助的。您可以轻松地开发,维护,更新/修改代码;这就是面向对象编程的美妙之处。 所以,我更喜欢选项1。