摘要方法VS接口(Abstract method vs interface)

2019-10-17 16:32发布

我重构我的代码,所以我需要做出接口或抽象类的决定。 我有基类播放器和继承这是所谓的录像机,MusicPlayer等基础类课程。 基类有没有实现(播放)抽象方法。 那么,什么是最好的方式? 将播放接口或把它留在抽象类。 玩在MusicPlayer是不是同样喜欢球员的VideoPlayer。 我这样做,在C#。

class Player
{
    abstract void Play();
} 

class VideoPlayer : Player
{
    void Play()
    {
      //Some code.
    }
}

class MusicPlayer : Player
{
    void Play()
    {
      //Some code.
    }
}

Answer 1:

一个常见的事情是做两件事

一个)提供的接口。 并使用接口时,你消耗的对象(即调用play方法)。

b)中提供一个实现为在有共同的管道的情况下的接口的基类; 常用的方法等,这是一个辅助实施者任意地使用

通过这种方式IAmAPlayer的实施者可以简单地实现该接口,或者它们的使用情况的基础类相匹配,他们可以使用。



Answer 2:

如果你没有要继承任何基本功能,使用的接口。 当你有你想要的部分实现被继承抽象类使用。



Answer 3:

通常,如果它只是意味着一个方法可以称为你使用的接口。 该接口部分旨在解决单继承问题。 如果您不打算在父常用的方法,使用的接口。



Answer 4:

把事情简单化。 如果你可以用一个接口做到这一点。 如果你不能使用一个接口使用抽象类。



Answer 5:

有一点要考虑,接口要求所有的属性和方法,其中抽象类没有得以实施。 小调点,但有时你需要支持组件的多个版本。



Answer 6:

您需要了解接口继承和类继承的区别。

抽象类用于建模外观类似的类的类层次结构(例如动物可以是抽象类和人类,狮子,老虎可在混凝土派生类)

接口用于通信不关心类型的类实现接口的2相似/非相似的类之间(如高度可界面特性,它可以通过人体,建筑物,树木来实现。这不要紧,如果你可以吃,你可以游泳,你可以死或任何..它重要的只是你需要有高度的东西(在你类实现))

现在,你就会明白这里为您例如,您可能需要同时拥有。 如果您确定的播放方法的消耗以及许多其他类别的可能性,它很好的有接口的实现,让其他人将通过接口使用方法。



文章来源: Abstract method vs interface