Общедоступный интерфейс является логической точкой , в которой независимые структуры программного обеспечения взаимодействия. Сущности могут взаимодействовать друг с другом в пределах одного компьютера, по сети или по множеству других топологий. Для продолжения взаимодействия важно, чтобы общедоступные интерфейсы были стабильными и спроектированы для поддержки будущих изменений, улучшений и устаревания.
Дизайн
Руководство
- Проект должен предоставить дополнительные документы, описывающие планы и процедуры, которые можно использовать для оценки соответствия проекта.
- Предоставьте архитектурный проектный документ.
- Предоставьте документ стандартов кодирования.
- Предоставьте документ с планом выпуска программного обеспечения.
- Предоставьте документ с планом отказа от устаревших интерфейсов.
- Создавайте полностью изолированные классы.
- Изолируйте общедоступные интерфейсы от зависимостей времени компиляции.
Лучшие практики
- Представьте пользователю полные и последовательные наборы концепций.
- Разрабатывайте интерфейсы для статической типизации.
- Сведите к минимуму зависимости интерфейса от других интерфейсов.
- Экспресс-интерфейсы в терминах типов уровня приложения.
- Используйте утверждения только для помощи в разработке и интеграции.
Примеры
- Интерфейс C ++
- Используйте классы протокола для определения общедоступных интерфейсов.
- Характеристики класса протокола:
- Он не содержит и не наследует классы, содержащие данные членов, невиртуальные функции или частные (или защищенные) члены любого типа.
- Он имеет невстроенный виртуальный деструктор, определенный с пустой реализацией.
- Все функции-члены, кроме деструктора, включая унаследованные функции, объявляются чисто виртуальными и остаются неопределенными.
- Преимущества
- Преимущества использования классов протокола включают в себя:
- Изоляция приложений от внешнего клиента
- Изоляция изменений, которые являются внутренними по отношению к интерфейсу
- Изоляция изменений в общедоступном интерфейсе от изменений в реализации интерфейса
- Изоляция требует затрат, но они, как правило, перевешиваются улучшением функциональной совместимости и возможности повторного использования.
- Затраты :
- Перебираем указатель реализации
- Добавление одного уровня косвенного обращения для каждого доступа
- Добавление размера указателя реализации для каждого объекта к требованиям к памяти
Рекомендации
- Различные методологии, такие как рефакторинг , поддерживают определение интерфейсов. Рефакторинг обычно применяется ко всей программной реализации, но особенно полезен при правильной очистке интерфейсов.
- Есть и другие подходы, определенные сообществом паттернов. Вы можете получить эти методологии в сообществе разработчиков шаблонов по адресу [1] .
- См. «Java-дизайн: создание лучших приложений и апплетов» для ознакомления с хорошей вводной методологией, которая также применима к сообществу C / C ++.