Я могу понять, почему нужно программировать с использованием интерфейса, а не реализации. Однако в примере, подобном следующему (я нахожу это много):
public interface ISomething
{
void BlahOne(int foo);
void BlahTwo(string foo);
}
public class BaseSomething : ISomething
{
public void BlahOne(int foo)
{
//impl
}
public void BlahTwo(string foo)
{
//impl
}
}
public class SpecificSomethingOne : BaseSomething
{
public void SpecificOne()
{
//blah
}
}
public class SpecificSomethingTwo : BaseSomething
//and on..
Текущий пример этого - система сущностей на основе компонентов в моей игре. (У меня есть IComponent, Component, PosComponent и т. Д.).
Однако я не вижу причины иметь что-то. Название может выглядеть лучше, но, похоже, у него нет цели. Я могу просто вернуть BaseSomething все время.
Есть ли причина иметь интерфейс, когда у вас есть единственная базовая реализация, которую все используют? (Я вижу использование, скажем, IComparable или IEnumerable)
РЕДАКТИРОВАТЬ: Для немного другого сценария (но все еще достаточно связанного, чтобы не нуждаться в другом вопросе), если я предполагаю, что у меня есть эта структура для всего, была бы большая разница, если бы я использовал ISomething
для типов параметров и переменные по сравнению с BaseSomething
?