Corak Proksi di Jawa

1. Gambaran keseluruhan

Corak Proksi membolehkan kita membuat perantara yang bertindak sebagai antara muka ke sumber lain , sementara juga menyembunyikan kerumitan komponen yang mendasari.

2. Contoh Corak Proksi

Pertimbangkan objek Java yang berat (seperti sambungan JDBC atau SessionFactory ) yang memerlukan beberapa konfigurasi awal.

Kami hanya mahu objek seperti itu diinisialisasi berdasarkan permintaan, dan setelah itu, kami ingin menggunakannya semula untuk semua panggilan:

Sekarang mari kita buat antara muka dan konfigurasi mudah untuk objek ini:

public interface ExpensiveObject { void process(); }

Dan pelaksanaan antara muka ini dengan konfigurasi awal yang besar:

public class ExpensiveObjectImpl implements ExpensiveObject { public ExpensiveObjectImpl() { heavyInitialConfiguration(); } @Override public void process() { LOG.info("processing complete."); } private void heavyInitialConfiguration() { LOG.info("Loading initial configuration..."); } }

Kami sekarang akan menggunakan corak Proksi dan menginisialisasi objek kami berdasarkan permintaan:

public class ExpensiveObjectProxy implements ExpensiveObject { private static ExpensiveObject object; @Override public void process() { if (object == null) { object = new ExpensiveObjectImpl(); } object.process(); } }

Setiap kali pelanggan kami memanggil kaedah proses () , mereka hanya dapat melihat pemprosesan dan konfigurasi awal akan selalu tersembunyi:

public static void main(String[] args) { ExpensiveObject object = new ExpensiveObjectProxy(); object.process(); object.process(); }

Perhatikan bahawa kami memanggil kaedah proses () dua kali. Di belakang tabir, bahagian tetapan akan berlaku hanya sekali - ketika objek pertama kali diinisialisasi.

Untuk setiap panggilan berikutnya, corak ini akan melangkau konfigurasi awal, dan hanya pemprosesan yang akan berlaku:

Loading initial configuration... processing complete. processing complete.

3. Bilakah Menggunakan Proksi

Memahami cara menggunakan corak adalah penting.

Memahami bila hendak menggunakannya adalah penting.

Mari kita bincangkan bila menggunakan corak Proksi:

  • Apabila kita mahukan versi ringkas atau objek berat. Dalam hal ini, kita dapat merepresentasikannya dengan objek kerangka yang memuat objek asli sesuai permintaan, juga disebut sebagai inisialisasi malas. Ini dikenali sebagai Proksi Maya
  • Apabila objek asal terdapat di ruang alamat yang berbeza, dan kami ingin merepresentasikannya secara tempatan . Kami dapat membuat proksi yang melakukan semua perkara boilerplate yang diperlukan seperti membuat dan mengekalkan sambungan, pengekodan, penyahkodan, dan lain-lain, sementara pelanggan mengaksesnya seperti yang ada di ruang alamat tempatan mereka. Ini dipanggil Proksi Jauh
  • Apabila kita ingin menambahkan lapisan keselamatan ke objek yang mendasari asal untuk memberikan akses terkawal berdasarkan hak akses klien . Ini dipanggil Proksi Perlindungan

4. Kesimpulan

Dalam artikel ini, kami melihat corak reka bentuk proksi. Ini adalah pilihan yang baik dalam kes berikut:

  • Apabila kita ingin mempunyai versi objek yang dipermudahkan atau mengakses objek dengan lebih selamat
  • Apabila kita mahukan versi tempatan objek jauh

Kod sumber penuh untuk contoh ini boleh didapati di GitHub.