package com.bookshop.behavioral.observer;
import com.bookshop.domain.Book;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* The subject: knows only that listeners exist, never what they do. Email, SMS,
* dashboards -- all the same to the inventory.
*/
public class Inventory {
private final List<StockListener> listeners = new CopyOnWriteArrayList<>();
public void subscribe(StockListener listener) {
listeners.add(listener);
}
public void unsubscribe(StockListener listener) {
listeners.remove(listener);
}
public void restock(Book book) {
for (StockListener listener : listeners) {
listener.onBackInStock(book);
}
}
}