Desain Proxy Pola
Oleh
chmood
Desain Proxy Pola
Maksud
Menyediakan pengganti atau tempat untuk objek lain untuk mengontrol akses ke sana.
Gunakan tingkat tambahan tipuan untuk mendukung didistribusikan, dikendalikan, atau akses cerdas.
Tambahkan wrapper dan delegasi untuk melindungi komponen nyata dari kompleksitas yang tidak semestinya.
Masalah
Anda perlu untuk mendukung objek sumber daya-lapar, dan Anda tidak ingin instantiate objek tersebut kecuali dan sampai mereka benar-benar diminta oleh klien.
Diskusi
Desain pengganti, atau proxy, keberatan bahwa: instantiates objek nyata pertama kalinya klien membuat permintaan dari proxy, mengingat identitas objek nyata ini, dan meneruskan permintaan menghasut untuk objek nyata ini. Maka semua permintaan berikutnya hanya diteruskan langsung ke objek nyata yang dikemas.
Ada empat situasi umum di mana pola Proxy berlaku.
Sebuah proxy virtual adalah sebuah tempat untuk "mahal untuk membuat" benda. Objek nyata hanya dibuat ketika klien permintaan pertama / mengakses objek.
Sebuah proxy remote menyediakan perwakilan lokal untuk sebuah objek yang berada dalam ruang alamat yang berbeda. Ini adalah apa yang "rintisan" kode RPC dan CORBA menyediakan.
Sebuah kontrol proksi pelindung akses ke objek induk sensitif. The "pengganti" objek memeriksa bahwa pemanggil memiliki izin akses diperlukan sebelum meneruskan permintaan tersebut.
Sebuah proxy cerdas interposes tindakan tambahan ketika sebuah objek diakses. Penggunaan khas meliputi:
Menghitung jumlah referensi ke objek nyata sehingga dapat dibebaskan secara otomatis ketika tidak ada lagi referensi (alias pintar pointer),
Loading objek terus-menerus ke dalam memori ketika pertama direferensikan,
Memeriksa bahwa objek nyata terkunci sebelum diakses untuk memastikan bahwa tidak ada objek lain dapat mengubahnya.
Struktur
Dengan mendefinisikan antarmuka Subjek, kehadiran objek Proxy berdiri di tempat RealSubject transparan kepada klien.
Contoh
Proxy menyediakan dudukan pengganti atau tempat untuk menyediakan akses ke suatu objek. Sebuah cek atau bank draf adalah proxy untuk dana dalam rekening. Sebuah cek dapat digunakan di tempat uang tunai untuk melakukan pembelian dan akhirnya mengontrol akses ke uang tunai di rekening emiten.
Periksa daftar
Mengidentifikasi leverage atau "aspek" yang terbaik diimplementasikan sebagai pembungkus atau pengganti.
Mendefinisikan antarmuka yang akan membuat proxy dan komponen asli dipertukarkan.
Pertimbangkan mendefinisikan Pabrik yang dapat merangkum keputusan apakah proxy atau objek asli yang diinginkan.
Kelas wrapper memegang pointer ke kelas nyata dan mengimplementasikan antarmuka.
Pointer dapat diinisialisasi di konstruksi, atau pada penggunaan pertama.
Setiap metode wrapper kontribusi leverage, dan delegasi ke objek wrappee.
Aturan praktis
Adapter menyediakan antarmuka yang berbeda untuk subjek. Proxy memberikan antarmuka yang sama. Dekorator menyediakan sebuah antarmuka ditingkatkan.
Dekorator dan Proxy memiliki tujuan yang berbeda tetapi struktur serupa. Keduanya menjelaskan bagaimana untuk memberikan tingkat tipuan ke objek lain, dan implementasi menyimpan referensi ke objek yang mereka meneruskan permintaan.
Maksud
Menyediakan pengganti atau tempat untuk objek lain untuk mengontrol akses ke sana.
Gunakan tingkat tambahan tipuan untuk mendukung didistribusikan, dikendalikan, atau akses cerdas.
Tambahkan wrapper dan delegasi untuk melindungi komponen nyata dari kompleksitas yang tidak semestinya.
Masalah
Anda perlu untuk mendukung objek sumber daya-lapar, dan Anda tidak ingin instantiate objek tersebut kecuali dan sampai mereka benar-benar diminta oleh klien.
Diskusi
Desain pengganti, atau proxy, keberatan bahwa: instantiates objek nyata pertama kalinya klien membuat permintaan dari proxy, mengingat identitas objek nyata ini, dan meneruskan permintaan menghasut untuk objek nyata ini. Maka semua permintaan berikutnya hanya diteruskan langsung ke objek nyata yang dikemas.
Ada empat situasi umum di mana pola Proxy berlaku.
Sebuah proxy virtual adalah sebuah tempat untuk "mahal untuk membuat" benda. Objek nyata hanya dibuat ketika klien permintaan pertama / mengakses objek.
Sebuah proxy remote menyediakan perwakilan lokal untuk sebuah objek yang berada dalam ruang alamat yang berbeda. Ini adalah apa yang "rintisan" kode RPC dan CORBA menyediakan.
Sebuah kontrol proksi pelindung akses ke objek induk sensitif. The "pengganti" objek memeriksa bahwa pemanggil memiliki izin akses diperlukan sebelum meneruskan permintaan tersebut.
Sebuah proxy cerdas interposes tindakan tambahan ketika sebuah objek diakses. Penggunaan khas meliputi:
Menghitung jumlah referensi ke objek nyata sehingga dapat dibebaskan secara otomatis ketika tidak ada lagi referensi (alias pintar pointer),
Loading objek terus-menerus ke dalam memori ketika pertama direferensikan,
Memeriksa bahwa objek nyata terkunci sebelum diakses untuk memastikan bahwa tidak ada objek lain dapat mengubahnya.
Struktur
Dengan mendefinisikan antarmuka Subjek, kehadiran objek Proxy berdiri di tempat RealSubject transparan kepada klien.
Contoh
Proxy menyediakan dudukan pengganti atau tempat untuk menyediakan akses ke suatu objek. Sebuah cek atau bank draf adalah proxy untuk dana dalam rekening. Sebuah cek dapat digunakan di tempat uang tunai untuk melakukan pembelian dan akhirnya mengontrol akses ke uang tunai di rekening emiten.
Periksa daftar
Mengidentifikasi leverage atau "aspek" yang terbaik diimplementasikan sebagai pembungkus atau pengganti.
Mendefinisikan antarmuka yang akan membuat proxy dan komponen asli dipertukarkan.
Pertimbangkan mendefinisikan Pabrik yang dapat merangkum keputusan apakah proxy atau objek asli yang diinginkan.
Kelas wrapper memegang pointer ke kelas nyata dan mengimplementasikan antarmuka.
Pointer dapat diinisialisasi di konstruksi, atau pada penggunaan pertama.
Setiap metode wrapper kontribusi leverage, dan delegasi ke objek wrappee.
Aturan praktis
Adapter menyediakan antarmuka yang berbeda untuk subjek. Proxy memberikan antarmuka yang sama. Dekorator menyediakan sebuah antarmuka ditingkatkan.
Dekorator dan Proxy memiliki tujuan yang berbeda tetapi struktur serupa. Keduanya menjelaskan bagaimana untuk memberikan tingkat tipuan ke objek lain, dan implementasi menyimpan referensi ke objek yang mereka meneruskan permintaan.
Category
Komentar