Tutorials Design Patterns in C#
Mediator Pattern — Complete Guide
Mediator 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 17 of 69
Mediator Pattern
GoF Core ✓ → Enterprise → Cloud & Craft
Enterprise · 2 — App patterns · ~6 min · Module 3: Behavioral Design Patterns
What is this?
Mediator centralizes communication so objects do not reference each other — colleagues talk through one hub.
Why should you care?
ShopNest UI widgets (cart, coupon, totals) thrash if every control events every other control.
See it live — copy this example
Paste into a C# console or class library project and run dotnet run.
public interface ICheckoutMediator
{
void CouponChanged(string code);
void NotifyTotals(decimal total);
}
public sealed class CheckoutMediator : ICheckoutMediator
{
public CartPanel? Cart { get; set; }
public TotalsPanel? Totals { get; set; }
public void CouponChanged(string code)
{
var total = code == "SAVE10" ? 4500m : 4999m;
Totals?.Show(total);
}
public void NotifyTotals(decimal total) => Totals?.Show(total);
}
public sealed class TotalsPanel { public void Show(decimal t) => Console.WriteLine($"total={t}"); }
public sealed class CartPanel
{
private readonly ICheckoutMediator _m;
public CartPanel(ICheckoutMediator m) => _m = m;
public void ApplyCoupon(string c) => _m.CouponChanged(c);
}
var med = new CheckoutMediator();
med.Totals = new TotalsPanel();
new CartPanel(med).ApplyCoupon("SAVE10");
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- CartPanel never references TotalsPanel.
- Mediator updates totals.
- MediatR is a related in-process messaging style for application commands.
Practice next
- Apply coupon and see totals update.
- Add ShippingPanel notified via mediator.
- Avoid mediator becoming a god object — split by feature.
- Clear coupon and reset total.
- Log every mediator call.
Remember
Hub for colleague chatter. Reduces many-to-many links. Keep mediators focused.
ShopNest checkout widgets
Cart/coupon/totals coordinate via mediator.
Outcome: Widgets stay independently testable.
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!