Artikel ini menjelaskan masalah pemecahan distribusi anggur merah berdasarkan model proxy Java. Bagikan untuk referensi Anda, sebagai berikut:
1. Definisi Pola
Dalam mode proxy, dua objek berpartisipasi dalam memproses permintaan yang sama. Permintaan yang diterima dipercayakan oleh objek proxy ke objek nyata untuk diproses. Objek proxy mengontrol akses permintaan, yang memainkan jembatan mediasi antara aplikasi klien dan objek nyata. Mode proxy menggunakan agregasi objek alih -alih pewarisan, secara efektif mengurangi kopling antara modul perangkat lunak.
2. Contoh model
1 analisis pola
Kami meminjam distribusi anggur untuk menggambarkan model ini.
2 mode proxy diagram kelas statis
3 contoh kode
3.1 Antarmuka Pabrik Anggur Merah 1 Iredwine
Paket com.demo.real;/** * Antarmuka anggur merah * * @author * */antarmuka publik iredwine {// metode untuk memproduksi produk public void anggur merah (); // Metode untuk Menjual Anggur Publik Void Sell ();}3.2 Realisasi RealRedwinefactory di Pabrik Anggur Merah
package com.demo.real.impl;import com.demo.real.IRedWine;/** * Real wine production factory* * @author * */public class RealRedWineFactory implements IRedWine { // Method for producing red wine @Override public void product() { System.out.println("Red wine factory produces red wine..."); } // Metode untuk Menjual Anggur Publik Void Sell () {System.out.println ("Pabrik Anggur Merah menjual anggur merah ..."); }}3.3 Buat agen anggur merah - Redwineproxy
Paket com.demo.proxy; import com.demo.real.iredwine;/** * agen anggur merah * * @author * */kelas publik Redwineproxy mengimplementasikan iredwine {// produsen anggur merah asli private final iredwine redwine; // Izin Agen untuk Menjual Anggur Merah Private Boolean Izin = Benar; // metode konstruksi default redwineproxy publik (iredwine redwine) {this.redwine = redwine; } // Metode agen untuk memproduksi anggur merah (agen tidak menghasilkan anggur merah, dan mengambil anggur dari pabrik yang sebenarnya untuk dijual) @Override public void Product () {// Tentukan apakah agen memiliki hak untuk menjadi anggur merah jika (ini. System.out.println ("Agen menerima pesanan dan memberi tahu pabrik untuk menghasilkan ..."); this.redwine.product (); } else {System.out.println ("[Ini adalah agen anggur merah ilegal!]"); }} // Cara menjual anggur merah untuk agen @Override public void jual () {if (this.permission) {this.redwine.sell (); System.out.println ("Agen mendapat anggur merah grosir dari pabrik dan menjualnya dengan harga yang lebih tinggi, mendapatkan perbedaan tertentu dari itu ..."); } else {System.out.println ("[Ini adalah agen anggur merah ilegal!]"); }}}3.4 Pergi ke agen anggur untuk membeli klien anggur merah
Paket com.demo; import com.demo.proxy.redwineproxy; import com.demo.real.iredwine; import com.demo.real.impl.realredwinefactory;/** * Aplikasi utama * @Author */klien kelas publik {/** * @param static static static static static static [public stancy [public {/** @param {public static */public {public {public {/** @param {public {public {/** {public {/** {public {/{{@param fact {/** {public {/** {{/ * @param * instance iredwine realredwinefactory = new realredwinefactory (); // Dapatkan instance objek proxy iredwine redwineproxy = redwineproxy baru (realredwinefactory); // Agen memproduksi anggur merah (sebenarnya produksi nyata adalah pabrik) redwineproxy.product (); // Agen menjual anggur merah (harga grosir, kemudian menjualnya dengan harga yang lebih tinggi untuk mendapatkan perbedaan) redwineproxy.sell (); }}4 hasil berjalan
[Ini adalah agen anggur merah legal]
Agen menerima pesanan dan memberi tahu pabrik untuk menghasilkan ...
Pabrik Anggur Merah menghasilkan anggur merah ...
Pabrik Anggur Merah menjual anggur merah ...
Agen mendapat anggur merah grosir dari pabrik dan menjualnya dengan harga lebih tinggi, mendapatkan perbedaan harga tertentu darinya ...
AKU AKU AKU. Prinsip -prinsip desain dari pola ini
1 Penundaan pemuatan untuk meningkatkan efisiensi sistem
2 prinsip tanggung jawab tunggal
4. Gunakan kesempatan
1 Remote Proxy: Menyediakan proxy lokal untuk suatu objek di ruang alamat yang berbeda.
2 Agen Virtual: Jika pembuatan suatu objek memakan waktu, Anda dapat memanggilnya melalui objek proxy. Sebelum objek nyata dibuat, panggilan palsu dikembalikan. Ketika objek nyata dibuat, panggilan metode yang sesuai dari objek nyata dikembalikan ke klien.
3 Agen Perlindungan Mengontrol akses ke objek asli.
4 Pedoman Cerdas Mengganti pointer sederhana, yang melakukan beberapa operasi tambahan saat mengakses objek.
V. Diagram kelas statis mode proxy
Peran Abstrak: Antarmuka umum yang menyatakan objek nyata dan objek proksi.
Peran nyata: Objek target yang benar -benar menangani permintaan.
Peran Agen: Peran objek proksi berisi referensi ke objek nyata, sehingga objek proxy dapat mengubah permintaan menjadi objek nyata untuk diproses. Pada saat yang sama, objek proxy juga dapat menambahkan operasi tambahan sebelum dan sesudah melakukan operasi objek nyata.
Untuk konten yang lebih terkait dengan Java, pembaca yang tertarik dengan situs ini dapat melihat topik: "Tutorial Struktur Data Java dan Algoritma", "Ringkasan Java Operation Dom Node Tips", "Ringkasan Tips Operasi Java File dan Direktori" dan "Ringkasan Java Cache Tips"
Saya harap artikel ini akan membantu pemrograman Java semua orang.