Відповіді:
Загалом, клас обгортки - це будь-який клас, який "обгортає" або "інкапсулює" функціональність іншого класу або компонента. Вони корисні, якщо забезпечують рівень абстракції від реалізації базового класу чи компонента; наприклад, класи обгортки, які обгортають компоненти 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 ;
Хоча подвійне значення явно перетворюється на ціле число, яке також називається низхідним мовленням.
Клас обгортки не обов'язково потрібно обертати іншим класом. Це може бути функція обгортання класу API, наприклад, у файлі dll.
Наприклад, може бути дуже корисним створити клас оболонки dll, який піклується про всі ініціалізації та очищення dll та створить методи класу, які обгортають функціональні вказівники, створені, наприклад GetProcAddress()
.
Ура!
Клас обгортки - це клас, який "обгортається" навколо чогось іншого, як і його назва.
Більш офіційним визначенням цього буде клас, який реалізує шаблон адаптера . Це дозволяє змінювати один набір API в більш зручну для читання форму. Наприклад, у C #, якщо ви хочете використовувати рідний API Windows, це допомагає перетворити його в клас, який відповідає керівництву щодо дизайну .NET.
Існує кілька моделей дизайну, які можна назвати класами обгортки.
Дивіться мою відповідь на те, " Як відрізняються шаблони проксі, декоратора, адаптера та моста? "
Також може бути корисним зазначити, що в деяких середовищах велика частина того, що можуть робити обгорткові класи, замінюється аспектами.
Редагувати:
Взагалі обгортка збирається розширити те, що робить wrappee, не піклуючись про реалізацію wrappee, інакше немає сенсу обгортати, а не подовжувати обернутий клас. Типовим прикладом є додавання інформації про синхронізацію чи функцію ведення журналу навколо іншого сервісного інтерфейсу, на відміну від додавання її до кожної реалізації цього інтерфейсу.
Потім це стає типовим прикладом програмування Aspect. Замість того, щоб переходити через функцію інтерфейсу за допомогою функції та додавати протокол журнальної панелі, в аспектному програмуванні ви визначаєте точку, яка є своєрідним регулярним виразом для методів, а потім оголошуєте методи, які ви хочете виконати до, після або навколо всіх методів узгодження точкова точка. Напевно, справедливо сказати, що аспектне програмування - це вид використання шаблону Decorator, для якого також можна використовувати класи обгортки, але що обидві технології мають інше використання.
Клас Wrapper - це клас, який обгортає інший клас і забезпечує абстрагування між клієнтом та оригінальним класом, який обгортається.
клас обгортки - це звичайно клас, який має об'єкт як приватну власність. обгортка реалізує API цього приватного об'єкта, і тому він може бути переданий як аргумент, куди буде приватний об'єкт.
скажімо, у вас є колекція, і ви хочете використовувати якийсь переклад, коли до неї додаються об’єкти - ви пишете клас обгортки, який має всі методи колекції. коли викликається add (), обгортка переводить аргументи, а не просто передає їх у приватну колекцію.
обгортку можна використовувати в будь-якому місці колекції, яку можна використовувати, а приватний об'єкт все ще може мати інші об'єкти, що посилаються на нього та читають його.
Клас обгортки - це клас, який використовується для обгортання іншого класу для додавання шару непрямості та абстракції між клієнтом та оригінальним класом, який обгортається.
Клас Wrapper - це обгортка навколо примітивного типу даних. Він представляє примітивні типи даних у відповідних екземплярах класу, наприклад, булевий тип даних може бути представлений як екземпляр булевого класу. Всі класи примітивної обгортки в Java незмінні, тобто коли присвоєне значення екземпляру класу обгортки не можна більше змінювати.
Програмування Java передбачає клас обгортки для кожного примітивного типу даних для перетворення примітивних типів даних у відповідність об'єкту класу обгортки.
Класи Wrapper виникли для того, щоб задовольнити основну потребу програмістів - тобто використовувати примітивні значення, де дозволено лише Об'єкти. Як випливає з їх назви, класи обгортки обгортають примітивне значення і містять значення в Об'єкті. Отже, усі ті місця, де примітивів не було дозволено - наприклад, дженерики, хешмап-ключі, Arraylists тощо - програмісти тепер мають можливість надати ці примітивні значення як їх відповідні типи обгортки.
Крім того, ці типи обгортки мають ряд корисних методів для перетворення з примітивного типу у відповідні типи обгортки та назад, а також із рядків у типи обгортки та назад.
Я написав детальну статтю про класи обгортки в своєму блозі, де пояснюється поняття типів обгортки по глибині - http://www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-examples/ (Розкриття - Цей блог належить мені)
Наразі я використовував клас обгортки для свого проекту та основні переваги, які я отримую (лише одна користь для розширення пояснення теми):
Обробка винятків: Мій основний клас, який інший клас обгортає, має методи, які викидають винятки, якщо такі є, тому я створив клас обгортки, який обробляє винятки та негайно записує їх. Отже, в моєму основному обсязі не існує виключень поводження. Я просто викликаю метод і щось роблю.
Просте використання: Я легко ініціюю об'єкт. Зазвичай фаза ініціювання побудована з безлічі етапів.
Читання коду: Коли інший програміст відкриє мій код, він буде здаватися дуже зрозумілим і легким для маніпулювання.
Приховування деталей: Якщо ви генеруєте клас, який збирається використовувати інший програміст, тоді ви можете зафіксувати деталі на кшталт "обробка помилок, обробка винятків, повідомлення журналів тощо", так що програмісту не доведеться обробляти хаос, просто використовує методи.
Клас обгортки - це клас, який служить єдиною метою утримувати щось і додавати йому деяку функціональність. У Java, оскільки примітиви (наприклад, ints, floats, chars ...) не є об'єктами, тому якщо ви хочете ставитися до них як до одного, то вам доведеться використовувати обгортковий клас. Припустимо, ви хочете створити векторний ints, проблема полягає в тому, що вектор містить лише об'єкти, а не примітиви. Тож, що ви зробите, покладіть всі вкладиші в обгортку 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();
обгортка - це клас, який використовується для зв'язку між двома різними програмами між різними платформами