Функция оболочки

Функция, задача которой — только вызвать другую подпрограмму

Функция -обертка — это функция (другое название подпрограммы ) в библиотеке программного обеспечения или компьютерной программе , основной целью которой является вызов второй подпрограммы [1] или системного вызова с небольшими или нулевыми дополнительными вычислениями. Функции-обертки упрощают написание компьютерных программ, абстрагируя детали реализации подпрограммы.

Цель

Функции-обертки являются средством делегирования и могут использоваться для различных целей.

Удобство программирования

Функции-обертки упрощают написание компьютерных программ. Например, MouseAdapterи подобные классы в библиотеке Java AWT демонстрируют это. [2] Они полезны при разработке приложений, использующих функции сторонних библиотек. Обертка может быть написана для каждой из сторонних функций и использована в собственном приложении. В случае изменения или обновления сторонних функций необходимо изменить только оболочки в собственном приложении, а не все экземпляры сторонних функций в собственном приложении.

Адаптация интерфейсов классов/объектов

Функции-обертки можно использовать для адаптации существующего класса или объекта к другому интерфейсу. Это особенно полезно при использовании существующего библиотечного кода.

Тестирование кода

Функции-обертки можно использовать для написания процедур проверки ошибок для уже существующих системных функций без значительного увеличения длины кода путем повторения той же проверки ошибок для каждого вызова функции. [3] Все вызовы исходной функции можно заменить вызовами обертки, что позволяет программисту забыть о проверке ошибок после написания обертки. Тестовый драйвер — это своего рода функция-обертка, которая проверяет модуль кода, обычно вызывая его повторно с разными настройками или параметрами, чтобы строго следовать каждому возможному пути. Это не поставляемый код, но это и не одноразовый код, который обычно сохраняется для использования в регрессионном тестировании . Адаптер интерфейса — это своего рода функция-обертка, которая упрощает, адаптирует или расширяет интерфейс к модулю кода с целью сделать его более понятным или релевантным для пользователя. Он может переименовывать параметры, объединять параметры, устанавливать значения по умолчанию для параметров и тому подобное.

Множественное наследование

В языке программирования , который не поддерживает множественное наследование базовых классов, можно использовать функции-обертки для его имитации. Ниже приведен пример части класса Java , которая «наследует» от LinkedList и HashSet. См. метод для получения дополнительных сведений о реализации.

открытый класс Test реализует LinkedList , HashSet { @Override // содержит элементы данных и методы данных // ковариантный возврат }         

Библиотечные функции и системные вызовы

Многие библиотечные функции, например, в стандартной библиотеке C , действуют как интерфейсы для абстракции системных вызовов . Примерами этого являются функции fork и execve в glibc . Они вызывают системные вызовы fork и execve нижнего уровня соответственно.

Это может привести к неправильному использованию терминов «системный вызов» и «syscall» для обозначения библиотечных вызовов более высокого уровня, а не системных вызовов с аналогичными названиями, которые они оборачивают. [4] [5]

Вспомогательная функция

Вспомогательная функция — это функция, которая группирует части вычислений , назначая им описательные имена и позволяя повторно использовать вычисления. [6] Хотя не все обертки являются вспомогательными функциями, все вспомогательные функции являются обертками, и заметное использование вспомогательных функций — группировка часто используемых операций — происходит в динамической двоичной трансляции , в которой вспомогательные функции определенной архитектуры используются для трансляции инструкций из одного набора инструкций в другой. [7]

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

Ссылки

  1. ^ Ресельман, Боб; Пизли, Ричард; Прухняк, Уэйн (1998). Использование Visual Basic 6. Вопрос. стр. 446. ISBN 9780789716330.
  2. ^ Учебники Java
  3. ^ Стивенс, Ричард; Феннер, Билл; Рудофф; Эндрю М. (2003). Сетевое программирование UNIX. Addison-Wesley. стр.  5–6 , 29. ISBN 9780131411555.
  4. ^ "syscalls(2) - Страница руководства Linux". man7.org . Получено 2020-04-25 .
  5. ^ "Системные вызовы (библиотека GNU C)". www.gnu.org . Получено 25.04.2020 .
  6. ^ Fisler, Kathi (2005). "CS 1101: Вспомогательные функции". Worcester Polytechnic Institute . Архивировано из оригинала 7 мая 2021 года . Получено 17 ноября 2021 года .
  7. ^ Ван, Вэньвэнь (3 марта 2021 г.). Встраивание вспомогательных функций в динамическую двоичную трансляцию. CC: Compiler Construction. Нью-Йорк, США: Association for Computing Machinery . стр. 107. doi :10.1145/3446804.3446851. ISBN 978-1-4503-8325-7.
Взято с "https://en.wikipedia.org/w/index.php?title=Wrapper_function&oldid=1270223946"