Фу́нкція-обго́ртка — функція (підпрограма) в бібліотеці підпрограм або комп'ютерній програмі, головним призначенням якої є виклик іншої підпрограми або системного виклику з незначними додатковими обчисленнями або без них. Функції-обгортки спрощують написання комп'ютерних програм, абстрагуючи деталі реалізації підпрограм.

Мета Функції-обгортки є засобом та можуть використовуватися для низки цілей.

Зручність програмування Функції-обгортки спрощують написання комп'ютерних програм. Це можна побачити на прикладі MouseAdapter і аналогічних класів у бібліотеці Java AWT. Вони корисні при розробці застосунків, які використовують функції з бібліотек третіх сторін. Обгортку можна написати для кожної з функцій третьої сторони і використовувати в застосунку. В разі змінення функції третьої сторони або її оновлення, в нативному застосунку доведеться змінити лише обгортку, а не всі виклики цієї функції.

Адаптація інтерфейсів класів / об'єктів Функції-обгортки можна використовувати для адаптації наявного класу або об'єкта для надання йому іншого інтерфейсу. Це особливо корисно під час застосування наявного коду бібліотеки.

Тестування коду Функції-обгортки можна використовувати для написання процедур перевірки помилок для наявних системних функцій без значного збільшення довжини коду через повторення тієї ж перевірки на помилки для кожного виклику функції. Усі виклики оригінальної функції можна замінити викликами обгортки, що дозволяє програмісту «забути» про перевірку помилок після написання обгортки. Тестовий драйвер — це вид функції-обгортки, яка працює над модулем коду, зазвичай викликаючи його неодноразово з різними налаштуваннями або параметрами, щоб ретельно перевірити кожен можливий шлях. Це не код для доставки, але й не одноразовий код, його зазвичай зберігають для використання в регресивному тестуванні. Адаптер інтерфейсу — це вид функції-обгортки, яка спрощує, адаптує або розширює інтерфейс модуля коду з метою зробити його зрозумілішим або релевантнішим для користувача. Він може перейменовувати параметри, об'єднувати параметри, встановлювати значення параметрів за промовчанням тощо.

Множинне успадкування

У мові програмування, яка не підтримує множинного успадкування базових класів, для його імітації можна використати функції-обгортки. Нижче наведено приклад частини класу Java, яка «успадковує» від java.util.LinkedList та java.util.HashSet.import java.util.HashSet; import java.util.LinkedList;

public class Test implements LinkedList, HashSet { @Override // contains data members and data methods // covariant return }

Бібліотечні функції та системні виклики Багато бібліотечних функцій, як-от ті, що містяться в стандартній бібліотеці C, діють як інтерфейси для абстракції системних викликів. Наприклад, функції fork та execve в glibc викликають відповідно системні виклики fork та .

Це може призвести до неправильного використання терміну «системний виклик» для позначення викликів бібліотек вищого рівня, а не системних викликів з подібними назвами, які вони обгортають.

Допоміжна функція Допоміжна функція () — це функція, яка групує частини обчислення, надаючи їм описові назви та забезпечуючи повторне використання обчислень. Хоча не всі обгортки є допоміжними функціями, усі допоміжні функції є обгортками, і помітне використання допоміжних функцій — групування часто використовуваних операцій — полягає в динамічному двійковому перетворенні, в якому допоміжні функції певної архітектури використовуються для перетворення інструкцій з однієї системи команд в іншу.

Див. також Обгортка бібліотеки Адаптер (шаблон проєктування) Декоратор (шаблон проєктування) Мовне зв'язування Автоматичний генератор обгортки SWIG Вкладена функція

Примітки