Add all 23 GoF design pattern implementations (2026-06-13)

This commit is contained in:
Ankur
2026-06-13 21:44:56 +05:30
commit a5beb61425
106 changed files with 2977 additions and 0 deletions

View File

@@ -0,0 +1,36 @@
package observer;
import java.util.ArrayList;
import java.util.List;
/**
* Subject (Observable) — maintains a list of observers and notifies them
* when the stock price changes. Observers register and deregister freely.
*/
public class StockMarket {
private final String ticker;
private double price;
private final List<StockObserver> observers = new ArrayList<>();
public StockMarket(String ticker, double initialPrice) {
this.ticker = ticker;
this.price = initialPrice;
System.out.println("[Market] " + ticker + " initialised at $" + initialPrice);
}
public void subscribe(StockObserver observer) { observers.add(observer); }
public void unsubscribe(StockObserver observer) { observers.remove(observer); }
public void setPrice(double newPrice) {
double old = this.price;
this.price = newPrice;
System.out.printf("[Market] %s price: $%.2f -> $%.2f%n", ticker, old, newPrice);
notifyObservers(old, newPrice);
}
private void notifyObservers(double old, double newPrice) {
for (StockObserver o : observers) {
o.onPriceChanged(ticker, old, newPrice);
}
}
}