Публичный интерфейс - Public interface

А публичный интерфейс это логическая точка, в которой взаимодействуют независимые программные объекты. Сущности могут взаимодействовать друг с другом в пределах одного компьютера, в сети или в различных других топологиях. Для продолжения взаимодействия важно, чтобы общедоступные интерфейсы были стабильными и рассчитывались на поддержку будущих изменений, улучшений и устаревания.


дизайн

Руководство

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

Лучшие практики

  • Представьте пользователю полные и последовательные наборы концепций.
  • Разрабатывайте интерфейсы для статической типизации.
  • Сведите к минимуму зависимости интерфейса от других интерфейсов.
  • Экспресс-интерфейсы с точки зрения типов уровня приложения.
  • Используйте утверждения только для помощи в разработке и интеграции.

Примеры

  • Интерфейс C ++
Используйте классы протокола для определения общедоступных интерфейсов.
Характеристики класса протокола:
  • Он не содержит и не наследует классы, содержащие данные членов, невиртуальные функции или частные (или защищенные) члены любого типа.
  • Он имеет невстроенный виртуальный деструктор, определенный с пустой реализацией.
  • Все функции-члены, кроме деструктора, включая унаследованные функции, объявляются чисто виртуальными и остаются неопределенными.
Льготы
Преимущества использования классов протоколов включают:
  • Изоляция приложений от внешнего клиента
  • Изоляция изменений, которые являются внутренними по отношению к интерфейсу
  • Изоляция изменений общедоступного интерфейса от изменений реализации интерфейса
  • Изоляция требует затрат, но они, как правило, перевешиваются увеличением функциональной совместимости и возможности повторного использования.
Расходы:
  • Прохождение указателя реализации
  • Добавление одного уровня косвенного обращения за доступ
  • Добавление размера указателя реализации для каждого объекта к требованиям к памяти

использованная литература

  • Различные методологии, такие как рефакторинг, поддержка определения интерфейсов. Рефакторинг обычно применяется ко всей программной реализации, но особенно помогает при правильной очистке интерфейсов.
  • Есть и другие подходы, определенные сообществом паттернов. Вы можете получить эти методики от сообщества шаблонов на [1].
  • См. «Java-дизайн: создание лучших приложений и апплетов» для получения хорошей вводной методологии, которая также применима к сообществу C / C ++.