2024-07-08
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Pola Pengamat juga dikenal sebagai pola Publikasikan/Berlangganan. GOF mendefinisikan pola pengamat sebagai berikut: Mendefinisikan hubungan ketergantungan satu-ke-banyak antar objek, memungkinkan beberapa objek pengamat untuk fokus pada objek yang sama pada waktu yang sama. Ketika keadaan objek berubah, semua objek yang bergantung padanya akan mendapatkan Diberitahu dan diperbarui secara otomatis.
Seperti terlihat pada gambar di bawah, pola pengamat berisi 5 jenis objek.
Mari kita lihat implementasi spesifiknya.
(1) Antarmuka pengamat Observer.java mendefinisikan antarmuka pembaruan terpadu update(). Kode sumbernya ditunjukkan pada program berikut.
package behavior.observer;
/**
* @author Minggg
* 观察者接口
*/
public interface Observer {
public void update();
}
(2) Kelas implementasi pengamat Observer1.java adalah implementasi khusus dari pengamat, dan fungsi pembaruannya digunakan untuk mengeluarkan string ke konsol. Kode sumbernya ditunjukkan pada program berikut.
package behavior.observer;
/**
* @author Minggg
* 具体观察者
*/
public class Observer1 implements Observer {
public void update(){
System.out.println("观察者1得到通知!");
}
}
(3) Kelas implementasi pengamat Observer2.java adalah implementasi khusus dari pengamat lain, dan fungsi pembaruannya digunakan untuk mengeluarkan string ke konsol. Kode sumbernya ditunjukkan pada program berikut.
package behavior.observer;
/**
* @author Minggg
* 具体观察者
*/
public class Observer2 implements Observer {
public void update(){
System.out.println("观察者2得到通知!");
}
}
(4) Antarmuka yang diamati Subject.java mendefinisikan tiga fungsi antarmuka untuk pengamat operasi, dan mendefinisikan antarmuka fungsi operasi tertentu untuk mewakili fungsinya sendiri. Kode sumbernya ditunjukkan pada program berikut.
package behavior.observer;
/**
* @author Minggg
* 被观察者接口
*/
public interface Subject {
// 增加观察者
public void attach(Observer observer);
// 删除观察者
public void detach(Observer observer);
// 通知所有观察者
public void notifyObservers();
// 自身的操作接口
public void operation();
}
(5) Kelas abstrak yang diamati abstractSubject.java menyediakan vektor daftar Vektor untuk menyimpan semua objek pengamat, dan menulis fungsi implementasi untuk mengoperasikan objek daftar. Kode sumbernya ditunjukkan pada program berikut.
package behavior.observer;
import java.util.Enumeration;
import java.util.Vector;
/**
* @author Minggg
* 被观察者抽象类
*/
public abstract class AbstractSubject implements Subject {
private Vector