Mode agen
Model proxy disebut proxy atau pengganti dalam bahasa Inggris, dan keduanya dapat diterjemahkan sebagai "agen" dalam bahasa Cina. Proxy yang disebut berarti bahwa satu orang atau lembaga mengambil tindakan atas nama orang lain atau lembaga lain. Dalam beberapa kasus, klien tidak ingin atau tidak dapat secara langsung merujuk ke objek, dan objek proxy dapat bertindak sebagai perantara antara klien dan objek target
A. Peran tema abstrak
Menyatakan antarmuka umum antara topik nyata dan proxy, sehingga topik nyata dapat digunakan dapat digunakan.
B. Peran proxy:
Peran tema agen berisi referensi ke topik nyata, sehingga objek topik nyata dapat dioperasikan kapan saja; Peran tema agen memberikan antarmuka yang sama dengan peran topik nyata, sehingga dapat menggantikan topik nyata untuk mengontrol referensi ke topik nyata kapan saja, dan bertanggung jawab untuk membuat objek topik nyata (dan menghapus objek topik nyata) saat diperlukan; Peran agen biasanya melakukan operasi sebelum atau setelah melewati panggilan klien ke topik nyata, daripada hanya meneruskan panggilan ke objek topik nyata.
C. Peran Tema Nyata
Mendefinisikan objek nyata yang diwakili oleh peran proxy
Misalnya:
Refactoring dengan mode proxy dinamis
JDK Dynamic Proxy
Kelas Proxy Interceptor Kelas Target
Ringkasan: 1. Karena kelas proxy yang dihasilkan oleh JDKProxy mengimplementasikan antarmuka, semua metode di kelas target termasuk dalam kelas proxy.
2. Semua metode kelas proxy yang dihasilkan mencegat semua metode kelas target. Isi metode Invoke di Interceptor adalah komposisi dari setiap metode kelas proxy.
3. Antarmuka harus ada saat menggunakan JDKProxy.
4. Tiga parameter dalam metode Invoke dapat mengakses API dari metode yang dipanggil, parameter dari metode yang dipanggil, dan jenis pengembalian dari metode yang dipanggil dari kelas target.
Refactoring dengan mode proxy dinamis JDK
Merekonstruksi transaksi hibernasi menggunakan mode proxy dinamis JDK
Proxy Dinamis CGlib
1. CGLIB adalah perpustakaan kelas generasi kode berkualitas tinggi yang kuat, berkinerja tinggi, dan berkualitas tinggi. Ini dapat memperluas kelas Java dan mengimplementasikan antarmuka Java selama runtime.
2. Gunakan CGLIB untuk menghasilkan kelas proxy sebagai subkelas dari kelas target.
3. Tidak diperlukan antarmuka untuk menghasilkan kelas proxy menggunakan CGLIB
4. Kelas proxy yang dihasilkan oleh CGLIB mengesampingkan metode kelas induk.
5. Konten metode intersep di interseptor adalah tubuh metode di kelas proxy.
Refactoring transaksi hibernate menggunakan mode proxy dinamis cglib
Metode Proxy Musim Semi Dua
1. Jika objek target mengimplementasikan beberapa antarmuka, Spring menggunakan java.lang.reflect.proxy kelas proxy JDK.
Keuntungan: Karena ada antarmuka, sistem lebih longgar digabungkan. Kekurangan: Buat antarmuka untuk setiap kelas target.
2. Jika objek target tidak mengimplementasikan antarmuka apa pun, Spring menggunakan pustaka CGLIB untuk menghasilkan subclass dari objek target.
Keuntungan: Karena kelas proxy dan kelas target diwarisi, tidak perlu antarmuka ada.
Kerugian: Karena tidak ada antarmuka yang digunakan, kopling sistem tidak sebagus proxy dinamis menggunakan JDK.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.