Agen Pola Agen Dinamis Java: Suatu peran mewakili peran lain untuk mencapai fungsi spesifik tertentu.
Misalnya: hubungan antara produsen, perantara, dan pelanggan. Ketika pelanggan membeli produk, mereka tidak berhubungan langsung dengan produsen, juga tidak mengetahui bagaimana produk tersebut diproduksi. Pelanggan hanya berhubungan dengan perantara, dan perantara dapat Produk tersebut dikemas dan beberapa layanan purna jual disediakan.
Pola agen memiliki tiga peran: 1. Peran subjek abstrak 2. Peran subjek agen 3. Peran agen sebenarnya
Mari kita lihat realitas proxy statis.
Saya akan mengambil tank sebagai contoh.
Peran tema abstrak: Dapat dipindahkan
antarmuka publik Dapat dipindahkan {
batal bergerak();
}
kelas publik TanktimeProxy mengimplementasikan Moveable{
t pribadi yang dapat dipindahkan;
public TanktimeProxy(T yang dapat dipindahkan) {
super();
ini.t = t;
}
@Mengesampingkan
langkah kekosongan publik() {
long time1 = Sistem.currentTimeMillis();
Sistem.keluar.println("time1="+time1);
t.pindah();
lama waktu2 = Sistem.currentTimeMillis();
Sistem.keluar.println("time2="+time2);
System.out.println("Waktu berjalan adalah:"+(time2-time1));
}
}
kelas publik Tank mengimplementasikan Moveable{
@Mengesampingkan
langkah kekosongan publik() {
System.out.println("TanK bergerak.....");
}
}
Kelas publik TestTank {
public static void main(String[] args) {
Tangki t = Tangki baru();
Pemindahan yang dapat dipindahkan = new TanktimeProxy(t);
pindah.pindah();
}
}
Selanjutnya saya ingin menambahkan buku harian sebelum dan sesudah metode move() TanK:
Saya harus menulis kelas lain untuk mengimplementasikan fungsi ini:
kelas publik TanklogProxy mengimplementasikan Moveable{
t pribadi yang dapat dipindahkan;
public TanklogProxy(T yang dapat dipindahkan) {
super();
ini.t = t;
}
@Mengesampingkan
langkah kekosongan publik() {
System.out.println("mulai bergerak.....");
t.pindah();
System.out.println("akhiri gerakan......");
}
}
Kelas publik TestTank {
public static void main(String[] args) {
Tangki t = Tangki baru();
Pemindahan yang dapat dipindahkan = new TanktimeProxy(t);
Pemindahan yang dapat dipindahkan = new TanklogProxy(pindah);
pindah.pindah();
}
}
Jika saya ingin menambahkan lebih banyak fungsi sebelum dan sesudah metode move() dari Tank dipanggil, apakah saya perlu menulis lebih banyak peran tema agen? Ini akan membuat kode menjadi terlalu gemuk dan sulit untuk dipertahankan digunakan untuk mengatasinya? Jawabannya adalah ya. Kita dapat secara dinamis menghasilkan peran tema agen untuk mem-proxy semua objek proxy.
Di akhir artikel, saya ingin berbagi dengan Anda beberapa kutipan lelucon dari para programmer: IBM dan Boeing 777
Boeing 777 adalah pesawat pertama yang dirancang dan diproduksi seluruhnya dalam realitas virtual komputer, menggunakan peralatan yang seluruhnya disediakan oleh IBM. Sebelum uji terbang, presiden Boeing dengan antusias mengundang direktur teknis IBM untuk berpartisipasi dalam uji terbang, namun supervisor berkata: "Ah, ini suatu kehormatan besar, tapi hari itu istri saya berulang tahun, jadi..."...
CEO Boeing menjadi marah ketika mendengar ini: "Pengecut, saya belum memberi tahu Anda tanggal uji terbangnya!"