观察者设计模式案例 到货通知
时间: 2023-12-12 10:35:20 浏览: 57
观察者设计模式是一种行为型设计模式,它允许一个对象(称为主题)在其状态发生改变时通知一组“观察者”对象,以便它们能够自动更新。到货通知是观察者设计模式的一个经典案例,下面是一个简单的实现:
```java
// 主题接口
public interface Subject {
void registerObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers();
}
// 观察者接口
public interface Observer {
void update(String productName);
}
// 具体主题类
public class Product implements Subject {
private List<Observer> observers = new ArrayList<>();
private String name;
private boolean isArrived;
public Product(String name) {
this.name = name;
}
public void setArrived(boolean isArrived) {
this.isArrived = isArrived;
if (isArrived) {
notifyObservers();
}
}
@Override
public void registerObserver(Observer observer) {
observers.add(observer);
}
@Override
public void removeObserver(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers() {
for (Observer observer : observers) {
observer.update(name);
}
}
}
// 具体观察者类
public class Customer implements Observer {
private String name;
public Customer(String name) {
this.name = name;
}
@Override
public void update(String productName) {
System.out.println(name + " received a notification that " + productName + " has arrived.");
}
}
// 测试代码
public class Test {
public static void main(String[] args) {
Product product = new Product("iPhone 13");
Customer customer1 = new Customer("Alice");
Customer customer2 = new Customer("Bob");
product.registerObserver(customer1);
product.registerObserver(customer2);
product.setArrived(true);
}
}
```
在上面的代码中,Product类是具体主题类,它维护了一个观察者列表,并提供了注册、删除和通知观察者的方法。当产品到货时,它会调用notifyObservers()方法通知所有观察者。Customer类是具体观察者类,它实现了Observer接口,并在update()方法中处理到货通知。