informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Pola Proxy adalah pola desain struktural yang mengontrol akses ke objek lain dengan memperkenalkan objek proxy. Objek proksi ini dapat memberikan fungsionalitas tambahan pada objek yang diproksi, seperti kontrol akses, inisialisasi lambat, pencatatan log, atau akses jaringan.
agen jarak jauh:
agen virtual:
agen perlindungan:
Bimbingan cerdas:
Berikut ini adalah contoh implementasi sederhana dari pola proksi, yang menunjukkan cara mengontrol akses ke objek sebenarnya melalui objek proksi.
public interface Subject {
void request();
}
Subject
Antarmuka mendefinisikan arequest
Metode, ini adalah metode yang perlu diterapkan oleh objek aktual dan objek proxy.public class RealSubject implements Subject {
public void request() {
System.out.println("RealSubject: Handling request.");
}
}
RealSubject
kelas dilaksanakanSubject
Antarmukarequest
Metode, mewakili kelas yang benar-benar menangani permintaan tersebut.public class Proxy implements Subject {
private RealSubject realSubject;
public Proxy(RealSubject realSubject) {
this.realSubject = realSubject;
}
public void request() {
if (this.checkAccess()) {
this.realSubject.request();
this.logAccess();
}
}
private boolean checkAccess() {
// 检查访问权限
System.out.println("Proxy: Checking access prior to firing a real request.");
return true;
}
private void logAccess() {
// 记录请求日志
System.out.println("Proxy: Logging the time of request.");
}
}
Proxy
kelas dilaksanakanSubject
antarmuka dan memegang aRealSubject
obyek.request
Dalam metode ini, kelas proxy terlebih dahulu memeriksa izin akses dan kemudian memanggil objek sebenarnyarequest
metode, dan terakhir catat log permintaan.public class Client {
public static void main(String[] args) {
RealSubject realSubject = new RealSubject();
Proxy proxy = new Proxy(realSubject);
proxy.request();
}
}
Client
kelas dibuatRealSubject
DanProxy
objek, melaluiProxy
Panggilan objekrequest
metode untuk mengendalikanRealSubject
Mengakses.Isolasi:
keamanan:
Skalabilitas:
Cerdas:
kompleksitas kode:
Waktu merespon:
Kesulitan desain:
Client
|
v
Subject <---- Proxy <---- RealSubject
Pola proksi menyediakan cara yang efisien untuk mengontrol dan mengelola akses ke objek. Dengan menggunakan proxy, Anda dapat menambahkan berbagai fungsi sekaligus menjaga tanggung jawab objek bisnis tetap jelas. Mode ini sangat cocok untuk skenario yang memerlukan kontrol akses dan operasi pra-pemrosesan lainnya pada objek bisnis.
Pola Fasad adalah pola desain struktural yang membuat subsistem kompleks lebih mudah digunakan dengan menyediakan antarmuka terpadu untuk mengakses sekelompok antarmuka dalam subsistem. Pola fasad mendefinisikan antarmuka tingkat tinggi yang membuat subsistem ini lebih mudah digunakan.
Sederhanakan antarmuka ke sistem yang kompleks:
Hirarki:
Sistem terpisah:
Berikut ini adalah contoh implementasi sederhana dari pola Fasad, yang menunjukkan cara menyederhanakan penggunaan subsistem melalui kelas fasad.
public class SubsystemA {
public void operationA() {
System.out.println("SubsystemA: operationA");
}
}
public class SubsystemB {
public void operationB() {
System.out.println("SubsystemB: operationB");
}
}
public class SubsystemC {
public void operationC() {
System.out.println("SubsystemC: operationC");
}
}
public class Facade {
private SubsystemA subsystemA;
private SubsystemB subsystemB;
private SubsystemC subsystemC;
public Facade() {
this.subsystemA = new SubsystemA();
this.subsystemB = new SubsystemB();
this.subsystemC = new SubsystemC();
}
public void operation1() {
System.out.println("Facade: operation1");
subsystemA.operationA();
subsystemB.operationB();
}
public void operation2() {
System.out.println("Facade: operation2");
subsystemB.operationB();
subsystemC.operationC();
}
}
public class Client {
public static void main(String[] args) {
Facade facade = new Facade();
facade.operation1();
facade.operation2();
}
}
Kelas subsistem:
SubsystemA
, SubsystemB
, Dan SubsystemC
Ini adalah kelas implementasi spesifik dari subsistem, dan setiap kelas memiliki metode operasi uniknya sendiri.Kelas penampilan:
Facade
Kelas menampung objek subsistem dan menyediakan antarmuka yang disederhanakanoperation1
Danoperation2
untuk memanggil fungsi subsistem.kode klien:
Client
kelas berlaluFacade
kelas untuk dihubungioperation1
Danoperation2
, sehingga menyederhanakan penggunaan subsistem yang kompleks.Antarmuka yang disederhanakan:
kopling longgar:
pelapisan yang lebih baik:
Tidak mematuhi prinsip buka-tutup:
Dapat menyebabkan masalah kinerja:
Client
|
v
Facade ----> SubsystemA
----> SubsystemB
----> SubsystemC
Pola Fasad membuat bekerja dengan subsistem yang kompleks menjadi lebih mudah dengan menyediakan antarmuka yang disederhanakan. Cocok untuk skenario yang memerlukan penyederhanaan antarmuka subsistem, mengurangi interaksi langsung antara klien dan subsistem, dan memisahkan hierarki sistem. Meskipun berpotensi melanggar prinsip buka-tutup, dalam banyak kasus, kelebihannya jauh lebih besar daripada kerugiannya, sehingga desain sistem menjadi lebih jelas dan mudah dipelihara.