Tutorials Design Patterns in C#

Composite Pattern — Complete Guide

Composite 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 8 of 69

Composite Pattern

GoF CoreEnterpriseCloud & Craft

GoF Core · 1 — Create & structure · ~6 min · Module 2: Structural Design Patterns

What is this?

Composite lets you treat individual objects and trees of objects uniformly — folders of items sharing one interface.

Why should you care?

ShopNest category menus nest categories and leaf products under one render API.

See it live — copy this example

Paste into a C# console or class library project and run dotnet run.

public interface IMenuNode { void Print(int indent = 0); }
public sealed class MenuItem : IMenuNode
{
    private readonly string _name;
    public MenuItem(string name) => _name = name;
    public void Print(int indent = 0) => Console.WriteLine($"{new string(' ', indent)}- {_name}");
}
public sealed class MenuGroup : IMenuNode
{
    private readonly string _name;
    private readonly List<IMenuNode> _children = new();
    public MenuGroup(string name) => _name = name;
    public void Add(IMenuNode n) => _children.Add(n);
    public void Print(int indent = 0)
    {
        Console.WriteLine($"{new string(' ', indent)}[{_name}]");
        foreach (var c in _children) c.Print(indent + 2);
    }
}

var root = new MenuGroup("Catalog");
root.Add(new MenuItem("Phones"));
var audio = new MenuGroup("Audio");
audio.Add(new MenuItem("Headphones"));
root.Add(audio);
root.Print();

Run Example »

Edit the code below and click Run to see the result in Toolliyo’s live editor.

Code
Result

What happened?

  • MenuGroup and MenuItem both build IMenuNode.
  • Print recurses.
  • Callers do not care if a node is leaf or branch.

Practice next

  1. Print the sample tree.
  2. Add another nested group.
  3. Count leaves with a recursive helper.
  4. Add Remove on MenuGroup.
  5. Print SKU counts per group.

Remember

Uniform tree interface. Leaves and composites. Recursive operations.

ShopNest nested categories

Admin renders category trees with one Print/Walk API.

Outcome: UI code stays simple for deep menus.

Interview prep for this lesson

Practice these questions aloud after reading—each links to a full structured answer.

Mid PDF Detailed
Uniform Treatment of Individual and Composite Objects:?
Short answer: Both files and directories are treated the same, as they implement the IFileSystemComponent interface. This makes it easier to manage a mixed structure of individual and composite objects. Real-world exampl…
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…
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…
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