Контракт

Контракты — это элементы проекта, которые описывают (но не реализуют) набор свойств и методов (или только набор методов). Существует три вида контрактов:

Реализация свойств и методов, объявленных в контракте, находится в некотором элементе проекта. В этом случае говорят, что этот элемент проекта реализует данный контракт (подробнее).

Грубо говоря, контракт описывает то, какие свойства и методы есть у элемента, который реализует этот контракт.

Контракты позволяют воплощать следующие парадигмы разработки:

  • Полиморфизм. Могут существовать разные элементы проекта, реализующие контракт, но все они имеют набор одинаковых свойств и методов. Это те свойства и методы, которые объявлены в контракте. Поэтому вы можете одинаковым образом обращаться к данным разных элементов проекта, реализующих один и тот же контракт. Пример — справочники, Пример — структуры;
  • Инкапсуляция. Контракт можно использовать для того, чтобы скрыть от других частей проекта реализацию некоторой части бизнес-логики. Вы можете объявить в контракте набор методов, которыми должны пользоваться другие части приложения, если им нужно получить данные из вашей подсистемы. Реализацию этих методов вы можете изменять от версии к версии, при этом остальная часть проекта не будет изменяться, т. к. она использует методы, объявленные в контракте. Пример контракта сервиса;
  • Множественная реализация. Один элемент проекта может реализовывать несколько контрактов.