假设你使用了一个智能系统来监控库存水平,当库存低于某个阈值时,系统会通知你补货。
这就用到了观察者模式的思想。库存管理系统是被观察者,它跟踪库存水平并在必要时发送通知。你是观察者,接收库存系统的通知,并据此做出补货决定。
// 定义被观察者接口
interface InventorySystem {
void addObserver(GroceryStoreOwner observer);
void removeObserver(GroceryStoreOwner observer);
void notifyObservers();
void updateStockLevel(int level);
}
// 定义观察者接口
interface GroceryStoreOwner {
void receiveNotification(String message);
}
// 实现被观察者
class InventorySystemImpl implements InventorySystem {
private List<GroceryStoreOwner> observers = new ArrayList<>();
private int stockLevel;
@Override
public void addObserver(GroceryStoreOwner observer) {
observers.add(observer);
}
@Override
public void removeObserver(GroceryStoreOwner observer) {
observers.remove(observer);
}
@Override
public void notifyObservers() {
for (GroceryStoreOwner observer : observers) {
observer.receiveNotification("Stock level is low. Current level: " + stockLevel);
}
}
@Override
public void updateStockLevel(int level) {
stockLevel = level;
if (stockLevel < 10) {
notifyObservers();
}
}
}
// 实现观察者
class StoreOwner implements GroceryStoreOwner {
@Override
public void receiveNotification(String message) {
System.out.println("Received notification: " + message);
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
InventorySystem inventorySystem = new InventorySystemImpl();
GroceryStoreOwner storeOwner = new StoreOwner();
inventorySystem.addObserver(storeOwner);
inventorySystem.updateStockLevel(5); // 库存水平下降
}
}
运行程序,输出如下:
Received notification: Stock level is low. Current level: 5
这样的模式是易于拓展的,比如当店铺招聘新员工后,新来的负责采购的人也可以作为观察者来观察库存管理系统,并且在收到通知后进行补货。
