Где и как используется термин обертка в программировании, что это помогает делать?
Я сталкиваюсь с разработчиками программного обеспечения, использующими термин создания оболочек других классов или API или даже некоторых кодов, это термин, используемый опытными программистами
Так что любая идея, что они имеют в виду под этим;
например, простой вопрос, у нас есть два типа методов сортировки массива, позволяет создать оболочку для него
выше один очень простой пример
7 ответов:
термин "обертка" бросается вокруг много. Обычно он используется для описания класса, который содержит экземпляр другого класса, но который непосредственно не предоставляет этот экземпляр. Основная цель обертки-обеспечить "другой" способ использования обернутого объекта (возможно, обертка обеспечивает более простой интерфейс или добавляет некоторую функциональность).
слово "обертка" также может быть использовано при описании классических шаблонов проектирования.
обертывание объекта для обеспечения упрощенный интерфейс к нему часто описывается как шаблон "фасад". Обертка-это фасад.
иногда у вас может быть класс, который подходит для определенного интерфейса, но вы не можете изменить код для него, чтобы он соответствовал этому интерфейсу. Вы можете создать оболочку для того класса, который реализует интерфейс, но который направляет большинство вызовов к обернутому объекту. Это шаблон "адаптер". Обертка-это адаптер.
экземпляр, который вы описываете, если у вас есть два класса, которые могут выполнять сортировку массива с использованием разных алгоритмов, звучит как шаблон "стратегия", где вы предоставляете способ выполнения операции над некоторым объектом, но алгоритм, используемый для этой операции, может отличаться в зависимости от структуры этого объекта.
например, один из ваших алгоритмов сортировки может быть отличным для массивов длиной менее 100, но тогда производительность может быть проблемой для него. Другой алгоритм может быть хорош для больших массивов. Вы можно создать "оболочку" для двух алгоритмов, которая поддерживает операцию сортировки, но решает, какой алгоритм использовать на основе длины массива.
подавляющее большинство обертки существуют, чтобы скрыть какую-то сложность.
объяснение по аналогии
что такое накрутка? Пример 1: Ipad обертывание Iphone.
что делает ipad, что iphone не делает? Разве они в основном не одно и то же, за исключением того, что у вас есть большой экран? Ipad "обертывает" iphone: это означает, что у вас есть все преимущества iphone в самом ipad, а также преимущества большего экрана и т. д.
это буквально то же дело с "объектами".
.............внутри есть все хорошее, что есть то же самое, но другой внешний вид. Другая обертка.
"обертки могут предоставлять различные функции, чем базовый объект" (простое объяснение того, что это означает ниже):
иногда обертка может ограничить вещи, которые вы можете получить доступ внутри. Например, ipad может ограничить вашу способность совершать телефонные звонки, даже если Iphone, похороненный в нем, имеет эта возможность.
что такое упаковка: Пример 2: автоматический автомобиль, действующий как обертка для ручного автомобиля
подумайте об автоматическом автомобиле и ручном автомобиле. За кулисами, в автоматическом автомобиле, есть какой-то инженерный механизм, который автоматически меняет передачи для вас, но принципиально, под поверхностью, автомобиль по-прежнему является ручным автомобилем. Другими словами, автоматические функции автомобиля "обертывают" ручную функциональность автомобиля. Если бы вы хотели вручную переключать передачи самостоятельно в автоматическом автомобиле-вы просто не можете этого сделать. Возможность переключения передач "не выставляется" в автоматическом автомобиле. Но он выставляется в ручном автомобиле. Конечно, аналогия немного натянута, но я надеюсь, вы понимаете, к чему я клоню.
Это просто, что вы пишете какой-то простой в использовании код, чтобы скрыть сложности кода под ним. Это особенно полезно, когда вам нужно вызвать какой-то низкоуровневый API с языка более высокого уровня, и вы хотите сохранить весь "уродливый" код скрытым.
Edit: вы можете найти больше об этом в этих двух статьях wiki:библиотека и функции
оболочка-это некоторый код, который создается для внутреннего вызова некоторого API без изменения фактического API.
примером этого является выпуск Facebook их Facebook C# SDK. SDK на самом деле является оболочкой, поскольку он позволяет только вызывать свою базовую платформу, не давая вам конкретных методов и классов. С другой стороны, Facebook Developer Toolkit это его полный API.
есть много примеров "обертки" и термин иногда используется взаимозаменяемо. Ниже приведены несколько примеров, которые приходят на ум:
DLL обертка
в прошлом я создал оболочку COM вокруг DLL .NET, чтобы использовать расширенные функции .NET в старых приложениях, которые понимают COM, но не понимают .NET.
Object Wrapper (Java)
в Java есть класс, предоставляемый в элемент
java.lang
пакет для предоставления методов объекта для восьми примитивных типов. Все примитивные классы-оболочки в Java являются неизменными. Так чтоWrapper
классы используются для представления примитивных значений, когда это.