Apa itu kelas pembungkus?
Bagaimana kelas seperti itu bermanfaat?
design-patterns
wrapper
Bhaskar
sumber
sumber
Seperti apa kedengarannya: kelas yang "membungkus" fungsionalitas kelas lain atau API dalam API yang lebih sederhana atau hanya berbeda.
Lihat: Pola adaptor , Pola fasad
sumber
Kelas wrapper menyediakan cara untuk menggunakan tipe primitif sebagai objek. Untuk setiap primitif, kami memiliki kelas pembungkus seperti,
Integer dan Byte adalah kelas pembungkus dari int dan byte primitif. Ada waktu / batasan ketika Anda perlu menggunakan primitif sebagai objek sehingga kelas pembungkus menyediakan mekanisme yang disebut tinju / unboxing.
Konsep dapat dipahami dengan baik dengan contoh sebagai berikut
jadi begini caranya, kita bisa menggunakan tipe kelas wrapper untuk mengubahnya menjadi tipe primitif lainnya juga. Jenis konversi ini digunakan ketika Anda perlu mengkonversi tipe primitif ke objek dan menggunakannya untuk mendapatkan primitif lainnya juga. Meskipun untuk pendekatan ini, Anda perlu menulis kode besar. Namun, hal yang sama dapat dicapai dengan teknik casting sederhana karena potongan kode dapat dicapai seperti di bawah ini
Meskipun nilai ganda secara eksplisit dikonversi ke nilai integer juga disebut sebagai downcasting.
sumber
Kelas wrapper tidak perlu membungkus kelas lain. Mungkin fungsionalitas pembungkus kelas API misalnya file dll.
Sebagai contoh mungkin sangat berguna untuk membuat kelas wrapper dll, yang menangani semua inisialisasi dan pembersihan dll dan membuat metode kelas yang membungkus pointer fungsi yang dibuat dari mis
GetProcAddress()
.Bersulang !
sumber
Kelas pembungkus adalah kelas yang "membungkus" sesuatu yang lain, seperti namanya.
Definisi yang lebih formal adalah kelas yang mengimplementasikan Pola Adaptor . Ini memungkinkan Anda untuk memodifikasi satu set API menjadi bentuk yang lebih dapat digunakan dan dapat dibaca. Misalnya, dalam C #, jika Anda ingin menggunakan API Windows asli, ada baiknya membungkusnya dengan kelas yang sesuai dengan pedoman desain .NET.
sumber
Ada beberapa pola desain yang bisa disebut kelas wrapper.
Lihat jawaban saya untuk " Bagaimana Proxy, Dekorator, Adaptor, dan Pola Jembatan berbeda? "
sumber
Mungkin juga berharga untuk dicatat bahwa di beberapa lingkungan, sebagian besar dari apa yang kelas bungkus mungkin lakukan digantikan oleh aspek.
EDIT:
Secara umum pembungkus akan memperluas apa yang dilakukan wrappee, tanpa khawatir tentang implementasi wrappee, jika tidak tidak ada gunanya membungkus versus memperluas kelas yang dibungkus. Contoh khas adalah menambahkan informasi waktu atau fungsi logging di sekitar beberapa antarmuka layanan lain, sebagai lawan menambahkannya ke setiap implementasi antarmuka itu.
Ini kemudian menjadi contoh khas untuk pemrograman Aspect. Daripada melalui fungsi antarmuka dengan fungsi dan menambahkan logging boilerplate, dalam pemrograman aspek Anda mendefinisikan titik potong, yang merupakan semacam ekspresi reguler untuk metode, dan kemudian menyatakan metode yang ingin Anda jalankan sebelumnya, setelah atau sekitar semua metode yang cocok potongannya. Mungkin adil untuk mengatakan bahwa aspek pemrograman adalah semacam penggunaan pola Decorator, yang juga dapat digunakan oleh kelas wrapper, tetapi kedua teknologi memiliki kegunaan lain.
sumber
Kelas wrapper adalah kelas yang membungkus kelas lain dan memberikan abstraksi antara klien dan kelas asli yang dibungkus.
sumber
kelas wrapper biasanya kelas yang memiliki objek sebagai properti pribadi. pembungkus mengimplementasikan objek pribadi itu API dan sehingga dapat dilewatkan sebagai argumen di mana objek pribadi akan.
katakanlah Anda memiliki koleksi, dan Anda ingin menggunakan semacam terjemahan ketika objek ditambahkan ke dalamnya - Anda menulis kelas pembungkus yang memiliki semua metode pengumpulan. ketika add () dipanggil, wrapper menerjemahkan argumen alih-alih hanya meneruskannya ke koleksi pribadi.
pembungkus dapat digunakan di mana saja koleksi dapat digunakan, dan objek pribadi masih dapat memiliki objek lain yang merujuk padanya dan membacanya.
sumber
Kelas wrapper adalah kelas yang digunakan untuk membungkus kelas lain untuk menambahkan lapisan tipuan dan abstraksi antara klien dan kelas asli yang sedang dibungkus.
sumber
Kelas wrapper adalah pembungkus di sekitar tipe data primitif. Ini mewakili tipe data primitif dalam instance kelas yang sesuai misalnya, tipe data boolean dapat direpresentasikan sebagai instance kelas Boolean. Semua kelas pembungkus primitif di Jawa tidak dapat diubah yaitu sekali diberi nilai ke instance kelas pembungkus tidak dapat diubah lebih lanjut.
sumber
Pemrograman Java menyediakan kelas wrapper untuk setiap tipe data primitif, untuk mengkonversi tipe data primitif ke objek yang sesuai dari kelas wrapper.
sumber
Untuk membuat kelas pembungkus kesejahteraan bukanlah pekerjaan mudah. Untuk memahami kelas pembungkus bagaimana itu dirancang oleh beberapa orang lain juga bukan pekerjaan mudah. Karena itu ide, bukan kode. Hanya ketika Anda memahami ide tersebut, Anda dapat memahami bungkus.
sumber
Kelas Wrapper muncul untuk memenuhi kebutuhan dasar programmer - yaitu menggunakan nilai-nilai primitif di mana pun hanya Objek yang diizinkan. Seperti namanya, kelas wrapper membungkus nilai primitif dan menyimpan nilai dalam Object. Jadi, semua tempat di mana primitif tidak diizinkan - seperti generik, kunci-hashmap, Arraylists dll - programmer sekarang memiliki opsi untuk memberikan nilai-nilai primitif ini sebagai jenis pembungkus yang sesuai.
Selain itu jenis pembungkus ini memiliki sejumlah metode utilitas untuk mengkonversi dari jenis primitif ke jenis pembungkus yang sesuai dan kembali, dan juga dari Strings ke jenis pembungkus dan kembali.
Saya telah menulis artikel terperinci tentang kelas wrapper di blog saya yang menjelaskan konsep tipe wrapper secara mendalam - http://www.javabrahman.com/corejava/java-wrapper-classes-tutorial-with-examples/ (Pengungkapan - Blog ini milik saya)
sumber
Saat ini saya menggunakan kelas pembungkus untuk proyek saya dan manfaat utama yang saya dapatkan (hanya satu manfaat untuk memperluas penjelasan topik):
Penanganan pengecualian: Kelas utama saya, yang dibungkus kelas lain, memiliki metode yang melempar pengecualian jika ada, jadi saya membuat kelas pembungkus yang menangani pengecualian dan segera mencatatnya. Jadi, dalam ruang lingkup utama saya, tidak ada penanganan pengecualian. Saya hanya memanggil metode dan melakukan sesuatu.
Penggunaan Mudah: Saya dapat dengan mudah memulai objek. Biasanya fase inisiasi dibangun dari banyak langkah.
Keterbacaan Kode: Ketika programmer lain membuka kode saya, kode itu akan tampak sangat jelas dan mudah dimanipulasi.
Menyembunyikan Detail: Jika Anda membuat kelas yang akan digunakan oleh programmer lain, maka Anda dapat membungkus detail seperti "penanganan kesalahan, penanganan pengecualian, mencatat pesan dan lain-lain ..." sehingga programmer tidak harus menangani kekacauan, hanya cukup menggunakan metode.
sumber
Kelas wrapper adalah kelas yang melayani tujuan tunggal memegang sesuatu dan menambahkan beberapa fungsionalitas ke dalamnya. Di Jawa karena primitif (seperti int, mengapung, karakter ...) bukan objek jadi jika Anda ingin memperlakukan mereka seperti satu maka Anda harus menggunakan kelas pembungkus. Misalkan Anda ingin membuat Vektor int, masalahnya adalah Vektor hanya menampung Objek bukan primitif. Jadi apa yang akan Anda lakukan adalah meletakkan semua int di bungkus Integer dan menggunakannya. Contoh:
sumber
wrapper adalah kelas yang digunakan untuk berkomunikasi antara dua aplikasi berbeda antara platform yang berbeda
sumber