Есть программа, в которой я использую ссылки на интерфейсы. Грубо говоря. У меня есть интерфейс IRoom
, в которой есть интерфейс ITableList
, с методами взаимодействия со столами, в котором есть интерфейс ITable
со всеми свойствами стола.
Это интерфейс Позиций
Это интерфейс Список позиций взаимодействия с Позициями
Это интерфейс всего, там же и есть взаимодействие со Списком позиций
Это код взаимодействия sec - ISecurity, Positions - IPositionList, GetLast.... - IPosition
Под каждым интерфейсом скрывается какая-то конкретная реализация, в которой и определены необходимые методы. Например:
interface IFoo
{
IBar Bar { get;set; }
// прочие свойства и методы
}
class Foo : IFoo
{
public IBar Bar { get; set; }
}
var foo = new Foo();
// здесь мы присваиваем свойству Bar переменную класса Bar, в котором
// уже определены все методы, указанные в интерфейсе IBar
foo.Bar = new Bar();
Есть такая штука, Принцип инверсии зависимостей - про него можно легко нагуглить. Интерфейсы являясь абстракцией и помогают реализовывать этот принцип. Используя интерфейсы программу можно сделать более гибкой и легко тестируемой. Интерфейс это контракт - он гарантирует, что класс реализующий его будет содержать описанные в интерфейсе методы - так что вся реализации интерфейсов находится непосредственно в классах. Ну как это делается, вам уже в соседнем ответе рассказали. Не буду повторяться. То что вы поняли под ссылкой на интерфейс - это просто конструкция языка, подразумевающая, что в этом поле будет хранится ссылка на любой класс реализующий этот интерфейс.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Здравствуйте! Сейчас пытаюсь написать 3d бродилку, руководствуясь этой статьей
Привет, Я писал тестовый фильтр который должен возвращать мне данные в ng-repeat