Что такое класс-оболочка?
Что такое класс обертки?
Чем полезны такие занятия?
17 ответов
В общем случае класс-оболочка-это любой класс, который" обертывает "или" инкапсулирует " функциональность другого класса или компонента. Они полезны, предоставляя уровень абстракции от реализации базового класса или компонента; например, классы-оболочки, которые обертывают com-компоненты, могут управлять процессом вызова com-компонента, не беспокоя вызывающий код с ним. Они также могут упростить использование базового объекта путем уменьшения количества точек интерфейс часто это делает более безопасным использование базовых компонентов.
только то, что это звучит: класс, который "обертывает" функциональность другого класса или API в более простой или просто другой API.
посмотреть: шаблон адаптер, фасад шаблон
классы-оболочки предоставляют способ использования примитивных типов в качестве объектов. Для каждого примитива у нас есть класс-оболочка, такой как,
int Integer
byte Byte
Integer и Byte-это классы-оболочки примитивов int и byte. Есть времена / ограничения, когда вам нужно использовать примитивы в качестве объектов, поэтому классы-оболочки предоставляют механизм, называемый боксом/распаковкой.
концепция может быть хорошо понята в следующем примере как
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.
класс-оболочка не обязательно должен обернуть другой класс. Это может быть функциональность обертывания класса API, например, в dll-файле.
например, может быть очень полезно создать класс-оболочку dll, который заботится обо всех инициализации и очистке dll и создает методы класса, которые переносят указатели функций, созданные, например, из GetProcAddress()
.
Ура !
класс-оболочка-это класс, который" обертывается " вокруг чего-то другого, как и его имя.
более формальным определением этого будет класс, который реализует Шаблон Адаптер. Это позволяет изменить один набор API в более удобную для чтения форму. Например, в C#, если вы хотите использовать собственный API Windows, это помогает обернуть его в класс, который соответствует рекомендациям по дизайну .NET.
существует несколько шаблонов проектирования, которые можно назвать классами оболочки.
см. мой ответ на "чем отличаются Шаблоны Прокси, декоратора, адаптера и моста?"
также может быть полезно отметить, что в некоторых средах большая часть классов-оболочек может быть заменена аспектами.
EDIT:
В общем случае обертка будет расширяться на то, что делает обертка, не беспокоясь о реализации обертки, иначе нет смысла обертывать по сравнению с расширением обернутого класса. Типичным примером является добавление информации о времени или функции ведения журнала Вокруг другого интерфейса службы, как против добавления его к каждой реализации этого интерфейса.
Это в конечном итоге является типичным примером для Аспектного программирования. Вместо того, чтобы проходить функцию интерфейса по функциям и добавлять ведение журнала шаблонов, в аспектном программировании вы определяете pointcut, который является своего рода регулярным выражением для методов, а затем объявляете методы, которые вы хотите выполнить до, после или вокруг всех методов, соответствующих pointcut. Его, вероятно, справедливо сказать, что аспект программирование-это своего рода Использование шаблона декоратора, для которого также могут использоваться классы обертки, но обе технологии имеют другие применения.
класс-оболочка-это класс, который обертывает другой класс и обеспечивает абстракцию между клиентом и исходным классом.
класс-оболочка обычно является классом, который имеет объект как частное свойство. оболочка реализует API этого частного объекта и поэтому может быть передана как аргумент, где частный объект будет.
скажем, у вас есть коллекция, и вы хотите использовать какой - то перевод при добавлении в нее объектов-вы пишете класс-оболочку, который имеет все методы коллекции. когда add () вызывается, оболочка переводит аргументы вместо того, чтобы просто передавать их в private коллекция.
обертку можно использовать в любом месте, где может использоваться коллекция, и частный объект все еще может иметь другие объекты, ссылающиеся на него и читающие его.
класс-оболочка-это класс, который используется для обертывания другого класса для добавления слоя косвенности и абстракции между клиентом и завернутым исходным классом.
класс-оболочка-это оболочка вокруг примитивного типа данных. Он представляет примитивные типы данных в соответствующих экземплярах класса, например, тип данных boolean может быть представлен как экземпляр класса Boolean. Все примитивные классы-оболочки в Java неизменяемы, т. е. один раз присвоенное значение экземпляру класса-оболочки не может быть изменено далее.
Java programming предоставляет класс-оболочку для каждого примитивного типа данных, чтобы преобразовать примитивные типы данных в соответствующий объект класса-оболочки.
сделать благополучие класса обертки - непростая задача. Понять класс обертки, как он разработан некоторыми другими, также непростая задача. Потому что это идея, а не код. Только когда вы понимаете идею, вы можете понять обертку.
классы-оболочки появились, чтобы удовлетворить основную потребность программистов-т. е. использовать примитивные значения там, где разрешены только объекты. Поскольку их имя предполагает, что классы-оболочки обертывают примитивное значение и удерживают значение в объекте. Таким образом, все те места, где примитивы не были разрешены - такие как дженерики, хэшмап-ключи, Arraylists и т. д. - программисты теперь имеют возможность предоставлять эти примитивные значения в качестве соответствующих типов обертки.
В дополнение эти типы оболочек имеют ряд полезных методов преобразования из примитивного типа в соответствующие типы оболочек и обратно, а также из строк в типы оболочек и обратно.
Я написал подробную статью о классах обертки в моем блоге, который объясняет концепцию типов обертки в глубине -http://www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-examples/ (Раскрытие информации-этот блог принадлежит мне)
в настоящее время я использовал класс-оболочку для своего проекта и основные преимущества, которые я получаю (только одно преимущество, чтобы расширить объяснение темы):
обработка исключений: мой основной класс, который обертывает другой класс, имеет методы, которые бросают исключения, если они возникают, поэтому я создал класс-оболочку, который обрабатывает исключения и регистрирует их немедленно. Таким образом, в моей основной области нет обработки исключений. Я просто вызываю метод и что-то делаю.
легкое использование: я могу легко инициировать объект. Обычно начальная фаза состоит из множества этапов.
читаемость кода: когда другой программист открывает мой код, код будет казаться очень ясным и простым в управлении.
скрытие деталей: Если вы создаете класс, который будет использовать другой программист, вы можете обернуть детали, такие как "обработка ошибок, обработка исключений, Регистрация сообщений и т. д..."так что программисту не придется справляться с хаосом, просто использует метод.
класс-оболочка-это класс, который служит единственной цели хранения чего-либо и добавления к нему некоторой функциональности. На Java, начиная с примитивов (например, ints, floats, chars...) не являются объектами, поэтому, если вы хотите относиться к ним как к одному, вам нужно использовать класс-оболочку. Предположим, вы хотите создать вектор ints, проблема в том, что вектор содержит только объекты, а не примитивы. Итак, что вы будете делать, это поместить все ints в целочисленную оболочку и использовать ее. Пример:
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();
оболочка-это класс, который используется для связи между двумя различными приложениями между разными платформами