Что такое класс-обёртка?
Чем полезны такие занятия?
design-patterns
wrapper
Bhaskar
источник
источник
Как это звучит: класс, который «оборачивает» функциональность другого класса или API в более простой или просто другой API.
См .: Адаптерный рисунок , Фасадный рисунок
источник
Классы Wrapper предоставляют способ использовать примитивные типы в качестве объектов. Для каждого примитива у нас есть класс-обертка, такой как,
Integer и Byte - это классы-обёртки примитивов int и byte. Существуют времена / ограничения, когда вам нужно использовать примитивы в качестве объектов, поэтому классы-оболочки предоставляют механизм, называемый боксом / распаковкой.
Понятие может быть хорошо понято следующим примером как
таким образом, мы можем использовать тип класса-оболочки для преобразования в другие примитивные типы. Этот тип преобразования используется, когда вам нужно преобразовать примитивный тип в объект и использовать их для получения других примитивов. Хотя для этого подхода вам нужно написать большой код. Тем не менее, то же самое может быть достигнуто с простой техникой приведения, поскольку фрагмент кода может быть достигнут, как показано ниже
Хотя двойное значение явно преобразуется в целочисленное значение, также называемое понижением.
источник
Класс-обертка не обязательно должен оборачивать другой класс. Это может быть функциональность обёртывания класса API, например, в файле dll.
Например, может быть очень полезно создать класс-оболочку dll, который позаботится обо всей инициализации и очистке dll, а также создать методы класса, которые переносят указатели на функции, созданные, например, из
GetProcAddress()
.Ура!
источник
Класс-обертка - это класс, который «оборачивает» что-то еще, как и его имя.
Более формальным определением этого класса будет класс, реализующий шаблон адаптера . Это позволяет вам модифицировать один набор API в более удобную для чтения форму. Например, в C #, если вы хотите использовать собственный API-интерфейс Windows, он помогает обернуть его в класс, соответствующий рекомендациям по разработке .NET.
источник
Существует несколько шаблонов проектирования, которые можно назвать классами-обертками.
См. Мой ответ на вопрос « Чем отличаются шаблоны прокси, декоратора, адаптера и моста? »
источник
Также может быть полезно отметить, что в некоторых средах большая часть того, что могут делать классы-оболочки, заменяется аспектами.
РЕДАКТИРОВАТЬ:
В общем случае обертка будет расширять то, что делает wrappee, не заботясь о реализации wrappee, в противном случае нет смысла оборачивать объект по сравнению с расширением обернутого класса. Типичным примером является добавление информации о синхронизации или функциональности регистрации вокруг какого-либо другого сервисного интерфейса, в отличие от добавления его в каждую реализацию этого интерфейса.
Затем это становится типичным примером для программирования аспектов. Вместо того, чтобы проходить через интерфейсную функцию по функции и добавлять шаблонную регистрацию, в аспектном программировании вы определяете pointcut, являющийся своего рода регулярным выражением для методов, а затем объявляете методы, которые вы хотите выполнить до, после или вокруг всех методов, соответствующих Точка. Вероятно, будет справедливым сказать, что аспектное программирование является своего рода использованием шаблона Decorator, для которого также могут использоваться классы-обертки, но обе технологии имеют другое применение.
источник
Класс Wrapper - это класс, который оборачивает другой класс и обеспечивает абстракцию между клиентом и исходным классом, который оборачивается.
источник
класс-обертка обычно является классом, который имеет объект как частное свойство. Оболочка реализует API этого закрытого объекта, и поэтому его можно передать в качестве аргумента, где этот закрытый объект будет.
скажем, у вас есть коллекция, и вы хотите использовать какой-то перевод, когда к ней добавляются объекты - вы пишете класс-обертку, который имеет все методы коллекции. когда вызывается add (), оболочка переводит аргументы, а не просто передает их в частную коллекцию.
Обертка может использоваться везде, где может использоваться коллекция, а закрытый объект может иметь другие объекты, ссылающиеся на него и читающие его.
источник
Класс-обертка - это класс, который используется для обертывания другого класса, чтобы добавить слой косвенности и абстракции между клиентом и исходным классом, который обернут.
источник
Класс Wrapper - это оболочка вокруг примитивного типа данных. Он представляет примитивные типы данных в соответствующих им экземплярах классов, например, булев тип данных может быть представлен как экземпляр булева класса. Все примитивные классы-обертки в Java являются неизменяемыми, т. Е. После присвоения значения экземпляру класса-обертки дальнейшее изменение невозможно.
источник
Java-программирование предоставляет класс-оболочку для каждого примитивного типа данных, чтобы преобразовать примитивные типы данных в соответствующий объект класса-оболочки.
источник
Сделать класс-обертку - это не легкая работа. Понять класс-оболочку, как он спроектирован другими, тоже нелегкая задача. Потому что это идея, а не код. Только когда вы понимаете идею, вы можете понять обертку.
источник
Классы Wrapper появились для удовлетворения основных потребностей программистов - то есть для использования примитивных значений везде, где разрешены только объекты. Как следует из их названия, классы-обертки оборачиваются вокруг примитивного значения и содержат значение в объекте. Таким образом, все те места, где примитивы были запрещены - такие как обобщенные элементы, ключи хеш-карты, массивы и т. Д. - программисты теперь имеют возможность предоставлять эти примитивные значения в качестве соответствующих им типов оболочки.
Кроме того, эти типы оболочек имеют ряд служебных методов для преобразования из примитивного типа в соответствующие типы оболочек и обратно, а также из строк в типы оболочек и обратно.
Я написал подробную статью о классах-оболочках в своем блоге, в которой подробно объясняется концепция типов оболочек - http://www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-examples/ (Раскрытие - Этот блог принадлежит мне)
источник
В настоящее время я использовал класс-оболочку для своего проекта и основные преимущества, которые я получаю (только одно преимущество, чтобы расширить описание темы):
Обработка исключений: у моего основного класса, который оборачивает другой класс, есть методы, которые выдают исключения, если таковые возникают, поэтому я создал класс-оболочку, который обрабатывает исключения и немедленно регистрирует их. Итак, в моей основной области нет обработки исключений. Я просто вызываю метод и что-то делаю.
Простое использование: я могу легко инициировать объект. Обычно начальная фаза состоит из множества шагов.
Читаемость кода: когда другой программист откроет мой код, код будет казаться очень понятным и простым в управлении.
Скрытие деталей: если вы генерируете класс, который собирается использовать другой программист, вы можете обернуть детали, такие как «обработка ошибок, обработка исключений, регистрация сообщений и т. Д.», Чтобы программисту не пришлось обрабатывать хаос, просто использует методы.
источник
Класс-обертка - это класс, который служит единственной цели - удерживать что-то и добавлять к нему некоторую функциональность. В Java, поскольку примитивы (например, int, float, chars ...) не являются объектами, поэтому, если вы хотите обращаться с ними как с одним, тогда вы должны использовать класс-оболочку. Предположим, вы хотите создать вектор целых, проблема в том, что вектор содержит только объекты, а не примитивы. Итак, что вы будете делать, это поместить все целые числа в упаковщик Integer и использовать его. Пример:
источник
Оболочка - это класс, который используется для связи между двумя разными приложениями между разными платформами.
источник