Programování
Observer
Nahrazuje nebo řeší události a hlídá na vzniklé stavy, používáme interface observer na to abychom zjistili když přišlo ke změně
Například shop ma reduce a sklád čeka na redukci, aby mohlo doplnit zásoby
Až se něco stane, tak se stane něco jiného.
Tohle je nahrazení eventů
    
public class Shop
{
    private List<IShopObserver> observers = new List<IShopObserver>;

    public void RegisterObserver(IShopObserver observer)
    {
        observers.Add(observer);
    }

    public void ReduceProducet(string product, int price)
    {
        Console.WriteLine("Zlevneno");

        foreach (var shopObserver in observers)
        {
            shopObserver.OnReduce(this, new ShopItem(product, price));
        }
    }
}

public interface IShopObserver
{
    public void OnReduce(Shop sender ,ShopItem e);
}

public class Stock : IShopObserver
{
    public void OnReduce(Shop sender ,ShopItem e)
    {
        throw new NotImplementedException();
    }
}