0

有时人们想在派生类中隐藏一个方法,但又不想违反 Liskov 替换原则,所以他们将其保留在那里,而是抛出一个NotSupportedException,可能带有该方法抛出的注释。

如果人们在传递派生类之前不去阅读每个方法的每条评论,那么这种做法是否也同样糟糕,甚至更糟,因为它会将问题从编译时问题转移到运行时问题?

4

1 回答 1

2

我同意,如果子类不支持其超类中的方法,那么通常它可能不应该扩展该类。除了需要运行时检查来处理您提到的可能的异常(在需要优化性能的情况下这可能是一个问题)之外,我认为这种方法的更大问题是将责任从子类转移到每个类需要使用它,使您的软件更少封装,因此更难维护和推理(软件越大,问题就越大)。

话虽如此,这个问题本质上是主观的。如果这种方法对您有用,请务必这样做。我个人更喜欢简单的 API 而不是复杂的 API,但这就是我。

于 2015-10-26T21:49:57.247 回答