Cài đặt Observer Pattern hoàn chỉnh: interface StockObserver có update(String symbol, double price). Class StockMarket quản lý Map<String, List> để mỗi cổ phiếu có danh sách observer. Có phương thức subscribe(symbol, observer), unsubscribe(symbol, observer), publish(symbol, price). Có 2 observer: PriceLogger in 'LOG =' (1 chữ số thập phân, Locale.US), AlertObserver chỉ in 'ALERT high' nếu price > 100 (1 chữ số thập phân khi in lại price nếu cần — ở đây in dạng đã nêu). Đọc N thao tác: 'S sym typ' (subscribe, typ là 'L' hoặc 'A'), 'U sym typ' (unsubscribe — gỡ observer đầu tiên cùng loại), 'P sym price'. Với S, tạo observer mới; với U, xoá observer cùng loại đầu tiên. Output theo thứ tự subscribe.
Dòng 1: N. N dòng thao tác.
1 <= N <= 10^4; price có thể là số thực.
Các dòng từ observer khi publish, theo thứ tự subscribe.
Đang tải editor...