37 lines
1.1 KiB
Java
37 lines
1.1 KiB
Java
package observer;
|
|
|
|
/**
|
|
* Observer Design Pattern — Runnable Demo
|
|
* Run: javac observer/*.java -d out/observer && java -cp out/observer observer.Main
|
|
* Article: https://ankurm.com/observer-design-pattern-java/
|
|
*/
|
|
public class Main {
|
|
public static void main(String[] args) {
|
|
System.out.println("=== Observer Design Pattern Demo ===\n");
|
|
|
|
StockMarket aapl = new StockMarket("AAPL", 175.00);
|
|
|
|
StockObserver alert = new AlertObserver("RiskEngine", 2.0);
|
|
StockObserver alice = new PortfolioObserver("Alice", 100);
|
|
StockObserver bob = new PortfolioObserver("Bob", 50);
|
|
|
|
aapl.subscribe(alert);
|
|
aapl.subscribe(alice);
|
|
aapl.subscribe(bob);
|
|
|
|
System.out.println();
|
|
aapl.setPrice(178.50); // +2% — should trigger alert
|
|
|
|
System.out.println();
|
|
aapl.setPrice(179.00); // small move
|
|
|
|
System.out.println("\n-- Bob unsubscribes --");
|
|
aapl.unsubscribe(bob);
|
|
|
|
System.out.println();
|
|
aapl.setPrice(165.00); // big drop — Bob doesn't hear it
|
|
|
|
System.out.println("\n=== Demo complete ===");
|
|
}
|
|
}
|