definition: One-to-many dependency O objects. when one object changes states, all of its dependents are notified and updated automatically.
观察者模式是基于对象的状态变化和观察者的通讯,以便他们作出相应的操作。简单的例子就是一个天气系统,当天气变化时必须在展示给公众的视图中进行反映。这个视图对象是一个主体,而不同的视图是观察者。
被观察者对象
public class AppleStore {
private List<Customer> customers=new ArrayList<>();
private int state;
public void setState(int state){
this.state=state;
notifyCustomers(state);
}
public void addCustomer(Customer customer){
customers.add(customer);
}
public void notifyCustomers(int state){
for (Customer customer : customers) {
customer.receiveNotice(state);
}
}
}
观察者
public class Customer {
private AppleStore store;
public void receiveNotice(int state){
System.out.println("收到通知"+state);
}
//初始化时订阅商店消息
public Customer(AppleStore store){
this.store=store;
this.store.addCustomer(this);
}
}
测试类
public class ObserverPatternTest {
public static void main(String[] args) {
AppleStore appleStore=new AppleStore();
Customer customer1=new Customer(appleStore);
Customer customer2=new Customer(appleStore);
Customer customer3=new Customer(appleStore);
appleStore.setState(1);
}
}