【问题标题】:When should I use interface/abstract class and when should I not? [closed]什么时候应该使用接口/抽象类,什么时候不应该? [关闭]
【发布时间】:2022-01-02 15:56:44
【问题描述】:

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

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

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

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

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

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

所以为了避免 r/PiggyChu620 犯的同样的错误,是否有关于“我什么时候应该使用接口/抽象类,什么时候不应该”的“边界指南”?

非常感谢您的帮助!

【问题讨论】:

  • 如果你问四个人,你会得到五个不同的答案,每个都被认为是最佳实践。你读过this question吗?

标签: c# interface abstract-class


【解决方案1】:

其实很简单。

如果您可以从代码中删除一个接口(当它用作参数时可能将其替换为特定类)并且您的代码仍然有效,那么就不需要它。

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

接口、基类和 OOP 很重要,因为您正在用它解决问题。如果您发现自己在没有解决实际问题的情况下这样做,我会认为它“过度使用”。

【讨论】:

    【解决方案2】:

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

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

    这种设计风格为你的程序创造了血液,并为你的程序创造了一个美丽而有原则的架构

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

    你可以参考这个链接compare abstract classes and interfaces

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-11
      • 2012-12-23
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 2010-12-13
      • 2023-04-02
      • 2011-04-15
      相关资源
      最近更新 更多