Rumah >hujung hadapan web >tutorial js >Pengenalan kepada corak proksi corak reka bentuk JavaScript_kemahiran javascript

Pengenalan kepada corak proksi corak reka bentuk JavaScript_kemahiran javascript

WBOY
WBOYasal
2016-05-16 16:24:081190semak imbas

Perihalan mod proksi

Nota: Seperti namanya, satu kelas digunakan untuk menggantikan kelas lain untuk melaksanakan fungsi kaedah Mod ini agak serupa dengan mod hiasan Perbezaannya ialah mod proksi memulakan kelas objek proksi bagi pihak klien , manakala mod hiasan menggunakan antara muka atau Rujukan parameter penghias awal digunakan untuk melaksanakan.

Dalam bahasa berorientasikan objek dinamik, mod proksi bukan sahaja mengawal dan mengubah suai kelas proksi, tetapi juga menyembunyikan dan melindungi kelas proksi sepenuhnya secara tidak langsung dan dipanggil apabila kita memerlukannya ;

Penerangan adegan:

Contoh yang sangat biasa ialah kes penyewa ingin menyewa rumah dan tuan rumah ingin menyewakannya untuk melihat rumah di rumah, jadi mereka pergi ke agensi perumahan bersama-sama. Tuan tanah mempercayakan bilik kepada ejen perantara untuk menyewa dan menjual Apabila orang yang sesuai diperlukan, pengantara akan menunjukkan bilik dan membayar sewa Ini akan membantu tuan rumah menyewakan bilik yang diamanahkan oleh penyewa syarat lokasi bilik yang diperlukan oleh pengantara Selepas agensi membantu penyewa mencari bilik kongsi, kedua-duanya membayar untuk menyewanya, dengan itu menyewa tempat untuk penyewa

Contoh kod sumber

Ikuti contoh di atas;

1. Sewaan Tuan Tanah;


Salin kod Kod adalah seperti berikut:

fungsi Fangdong() {
This.room = 'Nama bilik';
}
Fangdong.prototype.chuzu = function() {
console.log('Tuan tanah menyewakan bilik: ' bilik ini);
}

2. Kelas agen perantara:

Salin kod Kod adalah seperti berikut:

fungsi Proksi() {
This.fangdong = Fangdong baharu();
}

Proxy.prototype.chuzu = function() {
This.fangdong.chuzu();
console.log('Yuran agensi akan dikenakan selepas menyewakan');
}

3. Cara penggunaan:


Salin kod Kod adalah seperti berikut:

//Penyewa minta tolong ejen cari rumah;
var proksi = Proksi baharu();
proxy.chuzu();

Lihat penggunaan di atas, kelas proksi tidak diperlukan sama sekali di sisi klien, hanya gunakan kelas Proksi, yang boleh digunakan dengan baik dalam senario di mana proses logik perniagaan tertentu perlu dilindungi menggunakan mod proksi , ia boleh dengan mudah Perlindungan yang baik memerlukan kelas proksi yang dilindungi;

Arahan lain

Sama seperti corak penghias, corak proksi juga merangkumi prinsip pemikiran berorientasikan objek yang terbuka kepada lanjutan dan tertutup kepada pengubahsuaian

Mod proksi, anda boleh menggunakan antara muka atau kelas abstrak untuk menyeragamkan antara muka biasa: (mod proksi JAVA disediakan di bawah)

1. Kaedah abstrak kelas abstrak;


Salin kod Kod adalah seperti berikut:
Rumah kelas abstrak awam {
Public void abstract chuzu();
}
kelas awam Fangdong memanjangkan Rumah {

Bilik Rentetan Peribadi = “Nama bilik”;
@Override
Public void chuzu() {
System.out.println(bilik);
}
}

Proksi kelas awam memanjangkan Rumah {

Persendirian Fangdong fangdong;
Proksi Awam() {
This.fangdong = Hangdong baharu();
}
@Override
Public void chuzu() {
This.fandong.chuzu();
System.out.println("Bayar yuran agensi selepas menyewa");
}
}

//Gunakan

Rumah rumah = Proksi baharu();
house.chuzu();

2. Mod antara muka:

Salin kod Kod adalah seperti berikut:

antara muka Rumah {
    public void chuzu();
}

kelas awam Fangdong melaksanakan House {
    bilik String peribadi = “房间名称”;
    @Override
    public void chuzu() {
        System.out.println(bilik);
    }
}

Proksi kelas awam melaksanakan House {
    peribadi Fangdong fangdong;
    Proksi awam() {
        this.fangdong = Hangdong baharu();
    }
    @Override
    public void chuzu() {
        this.fandong.chuzu();
        System.out.println(“出租后交中介费”);
    }
}

//使用
Rumah rumah = Proksi baharu();
house.chuzu();

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn