Latest web development tutorials

mode proxy

Dalam mode proxy (Pola Proxy), kelas fungsi atas nama kelas lain. Jenis pola desain milik model struktural.

Dalam mode proxy, kita membuat sebuah objek dengan objek yang ada untuk menyediakan antarmuka fungsional ke dunia luar.

pengenalan

Maksud: untuk menyediakan agen untuk mengontrol akses ke objek ini ke objek lainnya.

Resolusi utama: akses langsung ke objek menyebabkan masalah, seperti: objek yang ingin mengakses pada mesin remote.Dalam sistem berorientasi objek, beberapa objek untuk beberapa alasan (seperti objek penciptaan mahal, atau tindakan tertentu memerlukan kontrol keamanan, atau akses luar proses), itu akan memberikan pengguna akses langsung ke konfigurasi sistem atau banyak masalah, kita dapat menambahkan lapisan untuk mengakses objek ini pada saat akses ke objek ini.

Kapan menggunakan: bila Anda ingin melakukan sesuatu untuk mengontrol akses ke kelas.

Cara untuk memperbaiki: menambahkan lapisan menengah.

Kode kunci: link dengan kombinasi kelas proxy.

contoh aplikasi: 1, Windows pintas dalam.2, babi pergi ke perubahan hasil Monyet Cuilan tinggi, dapat dipahami: penampilan Cuilan tinggi disarikan, tinggi Turquoise Biru I dan Monyet mengimplementasikan antarmuka ini, Pig akses Cuilan tinggi bila tidak melihat Monkey King, sehingga Monkey King adalah Cuilan tinggi kelas proxy. 3, tidak perlu untuk membeli tiket kereta api di stasiun untuk membeli, Anda juga bisa pergi ke outlet. 4, cek atau sertifikat deposito bank adalah dana account proxy. Periksa transaksi di pasar digunakan sebagai pengganti uang tunai, dan memberikan kontrol akun modal emiten. 5, semi aop.

Keuntungan: 1, tanggung jawab yang jelas.2, skalabilitas tinggi. 3, cerdas.

Kekurangan: 1, sebagai antara klien dan tema nyata bahwa objek proxy, sehingga beberapa jenis mode proxy dapat mengakibatkan permintaan kecepatan pemrosesan lebih lambat.2, untuk mencapai mode proxy membutuhkan pekerjaan tambahan untuk mencapai beberapa mode proxy sangat kompleks.

Penggunaan skenario: menurut membagi tanggung jawab, biasanya memiliki skenario penggunaan berikut: 1, Remote Agent.2. Alarm. 3, Copy-on-Write agen. 4, perlindungan (Protect atau Access) agen. 5, Cache Agen. 6, firewall (Firewall) agen. 7, sinkronisasi (Sinkronisasi) agen. 8, referensi cerdas (Smart Referensi) agen.

Catatan: Perbedaan antara 1 dan adaptor mode: pola Adapter perubahan besar dimaksud antarmuka objek, dan mode proxy tidak dapat diubah oleh agen-agen dari antarmuka kelas.Perbedaan antara 2 dan dekorator pola: Decorator Untuk meningkatkan fungsionalitas, dan mode proxy adalah untuk dikendalikan.

realisasi

Kami akan membuat sebuah antarmukaGambardan pelaksanaan kelas entitasGambarantarmuka.ProxyImageadalah kelas proxy, mengurangi jejak memoriRealImageobjek dimuat.

ProxyPatternDemo,kami menunjukkan penggunaan kelasProxyImageuntuk mendapatkansebuahobjekgambaryang akan dimuat dan ditampilkan pada permintaan.

Pola Proxy diagram UML

Langkah 1

Buat sebuah antarmuka.

Image.java

antarmuka publik Gambar {
   display void ();
}

Langkah 2

Membuat kelas entitas yang mengimplementasikan antarmuka.

RealImage.java

public class RealImage mengimplementasikan Gambar {

   String fileName swasta;

   RealImage publik (String fileName) {
      this.fileName = nama file;
      loadFromDisk (fileName);
   }

   @ Override
   display public void () {
      System.out.println ( "Menampilkan" + fileName);
   }

   private void loadFromDisk (String fileName) {
      System.out.println ( "Memuat" + fileName);
   }
}

ProxyImage.java

public class ProxyImage mengimplementasikan Gambar {

   swasta RealImage realImage;
   String fileName swasta;

   ProxyImage publik (String fileName) {
      this.fileName = nama file;
   }

   @ Override
   display public void () {
      jika (realImage == null) {
         realImage = baru RealImage (fileName);
      }
      realImage.display ();
   }
}

Langkah 3

Ketika diminta, menggunakanProxyImageuntuk mendapatkanRealImageobjek kelas.

ProxyPatternDemo.java

public class ProxyPatternDemo {
	
   public static void main (String [] args) {
      Gambar gambar = ProxyImage baru ( "test_10mb.jpg");

      // Memuat gambar dari image.display disk yang (); 
      System.out.println ( "");
      // Gambar tidak dapat dimuat dari image.display disk yang (); 	
   }
}

Langkah 4

Verifikasi output.

Memuat test_10mb.jpg
menampilkan test_10mb.jpg

menampilkan test_10mb.jpg