什么时候应该使用 interface/abstract class 什么时候不应该?

When should I use interface/abstract class and when should I not?

我们都知道接口和抽象 classes 是许多设计原则所必需的,并且被告知是编程的“最佳实践”,无论是出于维护还是扩展目的。

但我也听到有人说,“不要过度使用接口或抽象 classes”!

那么,我该如何“划清界限”呢?

我知道接口和抽象之间的区别class(有点)。

所以我对“什么时候用哪个?”不感兴趣,我对“什么时候用太多”感兴趣?

例如,the example given by r/PiggyChu620 from this post 显然“过度设计”了接口,正如下面 r/AlarmedSlide1 所说的那样。

因此,为了避免 r/PiggyChu620 犯的同样的错误,是否有任何关于“我什么时候应该使用 interface/abstract class 什么时候不应该使用”的“边界指南”?

非常感谢您的帮助!

其实很简单。

如果您可以从代码中删除接口(当它用作参数时,可以用特定的 class 替换它)并且您的代码仍然有效,则不需要它。

与所有工具一样,“我什么时候应该使用它”这个问题的答案是“当您 也需要 时”。如果你“仅仅因为”使用它,那么当你根本不使用它时,你可能会使你的程序更简单(因此更易于维护)。

接口、Base classes 和 OOP 很重要,因为您要用它来解决问题。如果您发现自己这样做却没有解决实际问题,我会认为它“过度使用”。

接口是 类 之间签署的合同,所有使用它的 类 都受接口规则的约束。

这种类型的设计更容易重用并增加维护。 假设您创建了一个车辆界面。所有交通工具都必须实现这个接口,包括自行车、摩托车、汽车等

这种设计风格造血,为你的程序创造出美观而有原则的架构

因此,如果您的 类 具有类似的行为,您可以使用接口或抽象 类。

可以参考这个link到compare abstract classes and interfaces