Tutorials Design Patterns in C#
Observer Pattern — Complete Guide
Observer Pattern — Complete Guide: free step-by-step lesson with examples, common mistakes, and interview tips — part of Design Patterns in C# on Toolliyo Academy.
On this page
Design Patterns in C# · Lesson 19 of 69
Observer Pattern
GoF Core ✓ → Enterprise → Cloud & Craft
Enterprise · 2 — App patterns · ~6 min · Module 3: Behavioral Design Patterns
What is this?
Observer notifies dependents when state changes — pub/sub in-process via events or interfaces.
Why should you care?
ShopNest inventory changes should refresh cache listeners and search indexers without hard references everywhere.
See it live — copy this example
Paste into a C# console or class library project and run dotnet run.
public sealed class StockSubject
{
public event Action<string, int>? Changed;
public void SetQty(string sku, int qty) => Changed?.Invoke(sku, qty);
}
public sealed class CacheObserver
{
public void OnChanged(string sku, int qty) => Console.WriteLine($"cache bust {sku}={qty}");
}
var stock = new StockSubject();
var cache = new CacheObserver();
stock.Changed += cache.OnChanged;
stock.SetQty("HD-100", 3);
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- StockSubject raises Changed; CacheObserver reacts.
- C# event is the idiomatic Observer.
- Unsubscribe to avoid leaks.
Practice next
- Raise SetQty and see cache log.
- Add SearchObserver.
- Unsubscribe with -= .
- Filter only HD-* skus in observer.
- Use EventHandler
args record.
Remember
Publish state changes. Observers react. Watch lifetimes.
ShopNest stock listeners
Qty change notifies cache + search.
Outcome: PDP stops showing stale “in stock” quickly.
Interview prep for this lesson
Practice these questions aloud after reading—each links to a full structured answer.
Sign in to ask a question or upvote helpful answers.
No questions yet — be the first to ask!