Интерфейсное программирование - Interface-based programming


Интерфейсное программирование, также известный как интерфейсная архитектура, является архитектурный образец для реализации модульное программирование на компонент уровень в объектно-ориентированного программирования язык, не имеющий модульной системы. Примером такого языка является Ява, который (по состоянию на 2015 г.), не имеет модульной системы на уровне компонентов. Java имеет упаковка системы, но программные компоненты Java обычно состоят из нескольких Пакеты Java - и в любом случае программирование интерфейса может дать преимущества перед простым использованием пакетов Java, даже если компонент состоит только из одного пакета Java.

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

Утверждается, что это увеличивает модульность приложения и, следовательно, его ремонтопригодность. Однако следует проявлять осторожность - простое разделение приложения на произвольные компоненты, взаимодействующие через интерфейсы, не в себе гарантия низкой связь или высокий сплоченность, два других атрибута, которые обычно считаются ключевыми для ремонтопригодности.

Архитектура на основе интерфейса может использоваться, когда третьи стороны - или даже отдельные группы в рамках одной организации - разрабатывают дополнительные компоненты или плагины для установленной системы. Кодовая база Eclipse IDE это пример программирования на основе интерфейса. Поставщикам подключаемых модулей Eclipse просто нужно разработать компоненты, удовлетворяющие интерфейсу, указанному поставщиком родительского приложения, Eclipse Foundation. Действительно, в Eclipse даже оригинальные компоненты, такие как Инструменты разработки Java самих себя плагины. Это что-то вроде мобильный телефон производитель указывает интерфейс мобильного зарядного устройства (расположение контактов, ожидается постоянный ток напряжение и т. д.), а также производитель и третьи стороны, производящие собственные зарядные устройства для мобильных телефонов, соответствующие этой стандартной спецификации интерфейса.

Эволюция программного обеспечения в программировании на основе интерфейсов

Использование интерфейсы Чтобы позволить разрозненным командам сотрудничать, возникает вопрос, как происходят изменения интерфейса в программировании на основе интерфейса. Проблема в том, что при изменении интерфейса, например при добавлении нового метода старый код, написанный для реализации интерфейса, больше не будет компилироваться, а в случае динамически загружаемых или связанных подключаемых модулей он либо не сможет загрузить, либо связать, либо выйдет из строя во время выполнения. Есть два основных подхода к решению этой проблемы:

  1. новый интерфейс может быть разработан с дополнительными функциями, которые могут унаследовать от старого интерфейса
  2. а версия программного обеспечения политика, такая как семантическое управление версиями 2.0 могут быть переданы разработчикам интерфейса, чтобы сделать возможными несовместимые в прямом направлении или даже обратно несовместимые изменения в будущих «основных» версиях платформы.

Оба этих подхода использовались в платформе Java.

Дизайн по контракту

Издатель интерфейсов обычно обещает, что они не будут изменять интерфейс в новых «минорных» версиях программного обеспечения, а разработчик, реализуя интерфейс, подразумевает, что они реализовали, по крайней мере, необходимые части интерфейса без каких-либо отклонений. Таким образом, интерфейс можно рассматривать как «договорное соглашение» между поставщиком и потребителем интерфейса. Если этот контракт оформлен более формально как спецификация программного обеспечения, это пример дизайн по контракту. Однако дизайн по контракту как таковой не требует использования интерфейсов для всех компонентов.

Смотрите также

  • Микросервисы
  • Актерская модель
  • CORBA, старая компонентная система для объектно-ориентированного программного обеспечения, которая сейчас редко используется по разным причинам.

Рекомендации