Страницы

Типы интерфейсов в разработке

С точки зрения проектирования интерфейсы можно разделить на:

  1. Изолирующий. Скрывает конструктивные особенности кода, но ссылается на конкретное внешне проявлямое поведение. Все утверждения (предикаты), которые к нему можно предъявить, должны оставаться неизменными вне зависимости от изменений внутреннего устройства. Когда это не так, говорят, что «абстракции протекают».
  2. Обобщающий. Представляет стабильную составляющую, как одну из граней кода, благодаря которой к нему можно обращаться единообразно, но не гарантирует полного совпадения поведения для разных кодов. Наоборот, позволяет передавать новые свойства коду, который его использует. Только часть утверждений относительно такого интерфейса остаётся неизменными, и они составляют его область применимости.

Пример изолирующего интерфейса — организация постоянного однотипного хранилища объектов без прямой зависимости клиента от нижележащего формата хранения.

Пример обобщающего — создание типизированного хранилища данных, для которого тип задаётся параметризируемо («абстрактно»). Тогда в зависимости от установленного типа данных меняется и тип хранилища.

Эта сторона важна, но в популярных языках никак не обозначается. Зато они концетрируются на второстепенной для разработчика стороне интерфейса, так как она важна для самого инструментария:

  1. Статический. Связывание на этапе компиляции.
  2. Динамический. Определение конкретного поведения во время исполнения.

Комментариев нет:

Отправить комментарий