【发布时间】:2013-01-19 18:46:24
【问题描述】:
我正在重构我的代码,所以我需要对接口或抽象类做出决定。 我有基类 Player 和继承基类的类,称为 VideoPlayer、MusicPlayer 等。基类有没有实现的抽象方法(Play)。 那么,什么是更可取的方式?将 Play 放在接口中或将其留在抽象类中。 MusicPlayer 中的播放与 VideoPlayer 中的播放器不同。我在 C# 中这样做。
class Player
{
abstract void Play();
}
class VideoPlayer : Player
{
void Play()
{
//Some code.
}
}
class MusicPlayer : Player
{
void Play()
{
//Some code.
}
}
【问题讨论】:
-
看起来都不错。作为替代方案,您可以提供接口以及实现它的骨架抽象类。不过,您似乎不需要这样的实现。
-
抽象类只有真正有用时才有用。拥有一个什么都不做的抽象类对我来说没有多大意义。
-
我说使用接口。抽象类对于实现模板方法模式比共享方法签名更有用。
标签: c# java oop interface abstract-class