У меня возникли некоторые проблемы с чрезмерным использованием интерфейсов в приложении, которое я разрабатываю. Это приложение для отчетов, которое просто выполняет инструкции SQL и анализирует некоторый XML, который сохраняет свойства столбца.Должны ли все объекты иметь интерфейс?
Я создал интерфейс для каждого класса, который у меня есть, поэтому я могу поменять местами реализации. Мы все видели, какую другую форму или следующее:
interface IFoo
{
IBar GetBar();
}
class FooA : IFoo
{
IBar GetBar()
{
return new BarA();
}
}
class FooB : IFoo
{
IBar GetBar()
{
return new BarB();
}
}
Я понимаю преимущество для развития таким образом, для классов, которые содержат конкретные детали реализации, но следует этому шаблон будет применяться для каждого класса в моем приложении?
Вот (упрощенный) пример из моего приложения:
interface IColumnDefinition
{
int Ordinal { get; }
string HeaderColor { get; }
}
class ColumnDefinition : IColumnDefinition
{
private readonly int _ordinal;
private readonly string _headerColor;
public int Ordinal { get { return _ordinal; } }
public string HeaderColor { get { return _headerColor; } }
public ColumnDefinition(int ordinal, string headerColor)
{
_ordinal = ordinal;
_headerColor = headerColor;
}
}
Если я просто назначая только для чтения значения свойств, которые могут быть использованы в дальнейшем, что действительно смысл создания этого отдельного интерфейса IColumnDefinition?
Microsoft не использует интерфейс в своих System.Data.DataColumn
или для своих System.Windows.Forms.DataGridViewColumn
, имеет ли смысл использовать его и почему?
PS: пожалуйста, не распинайте меня, говоря, что, поскольку Microsoft ничего не делает, я тоже не должен - это всего лишь два примера похожих объектов, которые широко используются, созданные людьми, которые знают намного больше о программировании, чем И.
См. [Является ли это только мной или интерфейсами чрезмерным?] (Http://stackoverflow.com/questions/90851/is-it-just-me-or-are-interfaces-overused) – Romoku