Что такое класс оболочки?
Что такое класс-оболочка?
Как такие классы полезны?
Ответы
Ответ 1
В общем, класс-оболочка - это любой класс, который "обертывает" или "инкапсулирует" функциональность другого класса или компонента. Они полезны, предоставляя уровень абстракции от реализации базового класса или компонента; например, классы-оболочки, которые переносят COM-компоненты, могут управлять процессом вызова COM-компонента, не беспокоя вызывающий код с ним. Они также могут упростить использование базового объекта за счет сокращения числа используемых интерфейсных точек; часто это делает более безопасным использование базовых компонентов.
Ответ 2
Как это звучит: класс, который "обертывает" функциональность другого класса или API в более простом или просто другом API.
Ответ 3
Классы Wrapper предоставляют способ использования примитивных типов в качестве объектов. Для каждого примитива мы имеем класс оболочки, такой как
int Integer
byte Byte
Целое и байты - это классы-оболочки примитивных int и байтов. Существуют времена/ограничения, когда вам нужно использовать примитивы в качестве объектов, поэтому классы-оболочки предоставляют механизм, называемый бокс/распаковкой.
Концепция может быть хорошо понята в следующем примере как
double d = 135.0 d;
Double doubleWrapper = new Double(d);
int integerValue = doubleWrapper.intValue();
byte byteValue = doubleWrapper.byteValue();
string stringValue = doubleWrapper.stringValue();
таким образом, это способ, мы можем использовать тип класса-оболочки для преобразования в другие примитивные типы. Этот тип преобразования используется, когда вам нужно преобразовать примитивный тип в объект и использовать его для получения других примитивов. Для этого подхода вам нужно написать большой код. Однако то же самое может быть достигнуто с помощью простого метода литья, поскольку фрагмент кода может быть достигнут как ниже
double d = 135.0;
int integerValue = (int) d ;
Хотя двойное значение явно преобразуется в целочисленное значение, также называемое downcasting.
Ответ 4
Класс оболочки не обязательно должен обертывать другой класс. Это может быть функциональность упаковки класса API, например. файл dll.
Например, может быть очень полезно создать класс оболочки dll, который позаботится обо всех инициализации и очистке dll и создаст методы класса, которые переносят указатели на функции, созданные, например, GetProcAddress()
Приветствия!
Ответ 5
Класс-оболочка - это класс, который "обертывает" что-то еще, как и его имя.
Более формальным определением этого будет класс, реализующий шаблон адаптера. Это позволяет вам модифицировать один набор API в более удобную и удобочитаемую форму. Например, в С#, если вы хотите использовать собственный API Windows, это помогает превратить его в класс, соответствующий требованиям .NET.
Ответ 6
Также может быть полезно отметить, что в некоторых средах большая часть классов-оболочек может быть заменена аспектами.
EDIT:
В общем случае оболочка будет расширять то, что делает обертка, не заботясь о реализации обертки, иначе нет точки обертывания и расширения обернутого класса. Типичным примером является добавление информации синхронизации или ведения журнала вокруг какого-либо другого интерфейса службы, а не добавления ее в каждую реализацию этого интерфейса.
Затем это становится типичным примером для программирования Aspect. Вместо того, чтобы проходить через функцию интерфейса по функциям и добавляя запись в виде шаблонов, в аспектном программировании вы определяете pointcut, который является своего рода регулярным выражением для методов, а затем объявляйте методы, которые вы хотите выполнить до, после или вокруг всех методов, соответствующих pointcut. Его, вероятно, справедливо сказать, что аспектное программирование - это своего рода использование шаблона Decorator, для которого также могут использоваться классы-обертки, но что обе технологии имеют другие применения.
Ответ 7
Существует несколько шаблонов проектирования, которые можно назвать классами-оболочками.
См. мой ответ на "Чем отличаются параметры прокси, декоратора, адаптера и моста?
Ответ 8
Класс Wrapper - это класс, который обертывает другой класс и обеспечивает абстракцию между клиентом и исходным классом.
Ответ 9
класс-оболочка обычно представляет собой класс, который имеет объект как частную собственность. оболочка реализует этот API-интерфейс частного объекта и поэтому может быть передан в качестве аргумента, в котором будет использоваться частный объект.
скажем, что у вас есть коллекция, и вы хотите использовать какой-то перевод, когда объекты добавляются к нему - вы пишете класс-оболочку, который имеет все методы коллекции. когда вызывается функция add(), оболочка преобразует аргументы вместо того, чтобы просто передавать их в частную коллекцию.
оболочку можно использовать в любом месте, где может использоваться коллекция, а у частного объекта могут быть другие объекты, ссылающиеся на него и считывающие его.
Ответ 10
Класс-оболочка - это класс, который используется для обертывания другого класса для добавления слоя косвенности и абстракции между клиентом и исходным классом.
Ответ 11
Класс Wrapper - это оболочка вокруг примитивного типа данных. Он представляет примитивные типы данных в соответствующих экземплярах классов, например. логический тип данных может быть представлен как экземпляр Boolean. Все примитивные классы-оболочки в Java неизменяемы, то есть после того, как присвоено значение экземпляру класса-оболочки, дальнейшее изменение не может быть изменено.
Ответ 12
Java-программирование предоставляет класс-оболочку для каждого примитивного типа данных, для преобразования примитивных типов данных для соответствия объекту класса-оболочки.
Ответ 13
Чтобы создать класс обертки, это нелегкая работа.
Понять класс обертки, как он разработан некоторыми другими, также непростая задача.
Потому что это идея, а не код.
Только когда вы понимаете идею, вы можете понять обертку.
Ответ 14
Классы Wrapper пришли к существованию, чтобы удовлетворить основную потребность программистов - т.е. использовать примитивные значения везде, где разрешены только объекты. Поскольку их имя предполагает, что классы-оболочки обертывают примитивное значение и удерживают значение в объекте. Таким образом, все те места, где не допускались примитивы, такие как дженерики, ключи hashmap, Arraylists и т.д., Теперь имеют возможность предоставлять эти примитивные значения в качестве соответствующих типов обёртки.
Кроме того, эти типы-обертки имеют ряд методов утилиты для преобразования из примитивного типа в соответствующие типы-оболочки и обратно, а также из строк в типы-оболочки и обратно.
Я написал подробную статью об классах-оболочках в своем блоге, в которой подробно описывается концепция типов обертки - http://www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-examples/
(Раскрытие информации - этот блог принадлежит мне)
Ответ 15
В настоящее время я использую класс оболочки для моего проекта и основные преимущества, которые я получаю (просто одно преимущество для расширения темы):
Обработка исключений. Мой основной класс, который использует другой класс, имеет методы, которые бросают исключения, если они встречаются, поэтому я создал класс-оболочку, который обрабатывает исключения и записывает их немедленно. Таким образом, в моей основной области нет обработки исключений. Я просто вызываю метод и делаю что-то.
Простое использование: я могу легко инициировать объект. Обычно инициирующая фаза построена из множества этапов.
Чтение кода: когда другой программист открывает мой код, код будет казаться очень понятным и простым в управлении.
Скрытие деталей. Если вы создаете класс, который будет использовать другой программист, вы можете обернуть детали, такие как "обработка ошибок, обработка исключений, протоколирование сообщений и т.д.", чтобы программист не был должны обрабатывать хаос, просто используют методы.
Ответ 16
Класс-оболочка - это класс, который служит единственной цели - удержать что-то и добавить к нему некоторые функции.
В Java, поскольку примитивы (например, ints, floats, chars...) не являются объектами, поэтому, если вы хотите рассматривать их как один, тогда вы должны использовать класс-оболочку.
Предположим, что вы хотите создать вектор ints, проблема состоит в том, что Vector содержит объекты не примитивы. Итак, что вы сделаете, поместите все int в оболочку Integer и используйте это. Пример:
int number = 5;
Integer numberWrapped = new Integer(number);
//now you have the int in an object.
//and this is how to access the int value that is being wrapped.
int again = numberWrapped.intValue();
Ответ 17
оболочка - это класс, который используется для связи между двумя различными приложениями между различными платформами.