Stock trading can work on publisher/observer patterns

StockMarket company can be publisher End user or any other company can be observer

public interface Publisher{
	addObserver()
	unRegisterObserver()
	updateStockValue(val)
	notifyLatestPriceToAllObserver()
}


public interface Observer{
	display()
	unSubscribe()
	update(newValue)
}



StockMarket Class which implements the Publisher interface:

class NiftyStockMarket implements Publisher{
	Set<Observer> observers;
	int value;
	addObserver(Observer newObserver){
		observers.add(newObserver);
	}

	unRegisterObserver(Observer newObserver){
		observers.remove(newObserver);
	}
	
	updateStockValue(Integer newValue){
		this.value = newValue;
	}

	notifyLatestPriceToAllObserver(){
		foreach(Observer obs : observers){
			obs.update(this.value);
		}
	}

}


class PayPayStock implementation Observer{
	int latestValue;
	Publisher publisher;

	PayPayStock(Publisher stockMarket){
		publisher.registerObserver(stockMarket);
		latestValue = 0;
		publisher = stockMarket;
		
	}
	public update(int newValue){
		latestValue = newValue;
		display();
	}
	
	public void display(){
		sout(latestValue);
	}

	public void unSubscribe(){
		publisher.unRegisterObserver(this);
	}

	

}