Что такое обертка в программировании?

В контексте программного обеспечения термин «обертка» относится к программам или кодам, которые буквально обволакивают другие компоненты программы. Можно выделить несколько различных функций обертки. Они часто используются для обеспечения совместимости или взаимодополняемости между различными программными структурами. Кроме того, они могут использоваться по визуальным причинам, как в случае с обертками HTML или CSS. Обертками могут быть отдельные программные компоненты, независимые программные продукты, программные архитектуры, классы в объектно-ориентированном программировании или фреймворки.

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

Обертки могут использоваться различными способами в программировании и разработке программного обеспечения. Следующие примеры показывают, как работают обертки и какие задачи они выполняют.

Обертки как переводчики пользовательского ввода

Формы в программах или веб-приложениях ожидают ввода данных, которые программа может обработать. Программы, разработанные во многих европейских странах, ожидают, что числа будут вводиться с запятой вместо десятичной точки, а размеры будут вводиться в метрах и сантиметрах. Когда вы используете эти программные компоненты в своих собственных приложениях, не всегда возможно адаптировать их к стандартному вводу данных пользователем в США. Это неизменно приводит к неправильным результатам или даже программным ошибкам.

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

Обертки для доступа к базам данных

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

Java Database Connectivity (JDBC), интерфейс базы данных от Oracle, является типичным примером обертки. В своей функции обертки JDBC предоставляет доступ к различным реляционным базам данных. JDBC подключает отдельные базы данных с помощью специальных драйверов. SQL-запросы направляются исключительно к JDBC, а не к базам данных. JDBC преобразует запросы в язык запросов к базе данных, возвращая результаты, совместимые с Java. Соответственно, запрашивающая программа всегда получает данные в едином формате, независимо от используемой базы данных.

Обертки в объектно-ориентированном программировании

В объектно-ориентированном программировании используются различные структурные паттерны, которые в основном всегда работают одинаково, независимо от используемого языка программирования. Модели проектирования Adapter и Decorator являются структурными паттернами и также называются обертками.

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

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

Обертки для проектирования HTML-документов

Обертки часто используются для (пере)проектирования веб-сайтов на HTML и CSS. Без оберток вам пришлось бы изменять несколько таблиц стилей и следить за тем, чтобы они снова подходили друг другу после внесения отдельных корректировок, например, изменения полей страницы в окне браузера.

Более простой подход заключается в использовании контейнера DIV в качестве обертки для размещения всего содержимого страницы, как в следующем примере обертки:

<html>
  <head>
  ...
  </head>
  <body>
    <div class="wrapper">
    …
    </div>
    </body>
</html>

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

Обертка определяется как таблица стилей в соответствующем файле CSS:

body {
	margin: 0;
	padding: 0
}
.wrapper {
	width: 500px;
	margin: 25px auto;
}

В этом примере обертки контейнеру присваивается ширина 500 пикселей через параметр width. Поля сверху и снизу определяются с помощью параметра margin, который установлен на 25 пикселей. Левое и правое поля автоматически определяются из ширины окна браузера и ширины контейнера.

Просто изменив обертку, вы можете легко настроить поля страницы без внесения дополнительных изменений в код HTML или CSS.

TCP-обертки в системах Linux

Фоновая служба inetd в Linux и других операционных системах на базе UNIX работает как TCP-обертка. inetd прослушивает сетевые сокеты и принимает запросы на соединение. В конфигурационном файле указывается, какие порты прослушивать. Запросы оцениваются, и служба inetd, указанная в конфигурационном файле, запускается для соответствующего порта. В большинстве случаев эти программы являются демонами, работающими в фоновом режиме.

Если соединение прерывается, inetd автоматически останавливает службу. Запуск служб по требованию значительно снижает нагрузку на системные ресурсы по сравнению с автоматическим запуском сетевых служб, которые могут вообще не понадобиться. inetd функционирует как обертка, которая получает сетевые запросы от всех программ, не взаимодействуя напрямую с отдельными службами.

TCP-обертки также могут использоваться для предотвращения нежелательного доступа из сети. TCP-обертка запрашивается inetd или специальным серверным программным обеспечением. Разрешенные и запрещенные хосты и компьютеры вносятся в файлы /etc/hosts.allow и /etc/hosts.deny.

Оцените статью
cdelat.ru
Добавить комментарий