Pola Proxy di Java

1. Ikhtisar

Pola Proxy memungkinkan kita untuk membuat perantara yang bertindak sebagai antarmuka ke sumber daya lain , sekaligus menyembunyikan kompleksitas yang mendasari komponen.

2. Contoh Pola Proxy

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

Kami hanya ingin objek seperti itu diinisialisasi sesuai permintaan, dan setelah itu, kami ingin menggunakannya kembali untuk semua panggilan:

Sekarang mari buat antarmuka sederhana dan konfigurasi untuk objek ini:

public interface ExpensiveObject { void process(); }

Dan implementasi antarmuka 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 pola Proxy dan menginisialisasi objek kami sesuai permintaan:

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

Setiap kali klien kami memanggil metode proses () , mereka hanya akan melihat pemrosesan dan konfigurasi awal akan selalu tersembunyi:

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

Perhatikan bahwa kami memanggil metode proses () dua kali. Di belakang layar, bagian pengaturan hanya akan terjadi sekali - saat objek pertama kali diinisialisasi.

Untuk setiap panggilan berikutnya, pola ini akan melewati konfigurasi awal, dan hanya pemrosesan yang akan terjadi:

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

3. Kapan Menggunakan Proxy

Penting untuk memahami bagaimana menggunakan pola.

Sangat penting untuk memahami kapan menggunakannya.

Mari kita bahas tentang kapan harus menggunakan pola Proxy:

  • Ketika kita menginginkan versi sederhana dari sebuah benda yang kompleks atau berat. Dalam kasus ini, kita dapat mewakilinya dengan objek kerangka yang memuat objek asli sesuai permintaan, juga disebut inisialisasi malas. Ini dikenal sebagai Proxy Virtual
  • Ketika objek asli ada di ruang alamat yang berbeda, dan kami ingin mewakilinya secara lokal . Kita dapat membuat proxy yang melakukan semua hal boilerplate yang diperlukan seperti membuat dan memelihara koneksi, encoding, decoding, dll., Sementara klien mengaksesnya seperti yang ada di ruang alamat lokal mereka. Ini disebut Proxy Jarak Jauh
  • Saat kami ingin menambahkan lapisan keamanan ke objek dasar asli untuk memberikan akses terkontrol berdasarkan hak akses klien . Ini disebut Proteksi Proxy

4. Kesimpulan

Pada artikel ini, kita telah melihat pola desain proxy. Ini adalah pilihan yang baik dalam kasus berikut:

  • Saat kita ingin memiliki versi objek yang disederhanakan atau mengakses objek dengan lebih aman
  • Saat kita menginginkan versi lokal dari remote object

Kode sumber lengkap untuk contoh ini tersedia di GitHub.