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 ✓EnterpriseCloud & 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.

Code
Result

What happened?

  • CartPanel never references TotalsPanel.
  • Mediator updates totals.
  • MediatR is a related in-process messaging style for application commands.

Practice next

  1. Apply coupon and see totals update.
  2. Add ShippingPanel notified via mediator.
  3. Avoid mediator becoming a god object — split by feature.
  4. Clear coupon and reset total.
  5. 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.

Mid PDF Detailed
Mediator (ChatMediator):?
Short answer: The mediator manages communication between the users. It maintains a list of all users and broadcasts messages to all other users when one user sends a message. This keeps the users from directly knowing ab…
Mid PDF Detailed
Mediator Interface (IChatMediator):?
Short answer: The IChatMediator interface defines two key operations: ■ SendMessage(string message, User user): Sends a message from a user to all other registered users. ■ RegisterUser(User user): Registers users with t…
Mid PDF Detailed
Abstract Factory (LoggerFactory):?
Short answer: The LoggerFactory class defines a factory method CreateLogger that returns an ILogger object. This is a generic interface for creating various logger types without specifying the concrete class directly. Re…
Mid PDF Detailed
Redo Functionality:?
Short answer: You can extend the system by adding redo functionality. After an undo operation, you could store the undone command in a separate stack and allow users to redo the previous undo operation. Real-world exampl…
Mid PDF Detailed
Abstract Expression (IExpression):?
Short answer: The IExpression interface declares an Interpret method, which is the core of the interpreter pattern. This method is used to interpret and evaluate expressions. public interface IExpression Example code { i…
Questions on this lesson 0

Sign in to ask a question or upvote helpful answers.

No questions yet — be the first to ask!

Design Patterns in C#
Course syllabus

Design Patterns in C# Tutorial

Module 1: Creational Design Patterns
Module 2: Structural Design Patterns
Module 3: Behavioral Design Patterns
Module 4: Enterprise Design Patterns
Module 5: Modern Enterprise Patterns
Module 6: Microservices & Cloud Patterns
Module 7: ASP.NET Core Architecture Patterns
Module 8: Interview & System Design
Toolliyo Assistant
Ask about tutorials, ebooks, training, pricing, mentor services, and support. I use public site content only—not admin or internal tools.

care@toolliyo.com

Need callback? Share your details