Tutorials Design Patterns in C#
Prototype Pattern — Complete Guide
Prototype 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 5 of 69
Prototype Pattern
GoF Core → Enterprise → Cloud & Craft
GoF Core · 1 — Create & structure · ~6 min · Module 1: Creational Design Patterns
What is this?
Prototype copies an existing object (clone) instead of rebuilding from scratch — useful when setup is expensive or templates repeat.
Why should you care?
ShopNest seller “product templates” duplicate a base SKU with small tweaks.
See it live — copy this example
Paste into a C# console or class library project and run dotnet run.
public sealed class ProductTemplate
{
public string Name { get; set; } = "";
public decimal Price { get; set; }
public List<string> Tags { get; set; } = new();
public ProductTemplate DeepClone() => new()
{
Name = Name,
Price = Price,
Tags = Tags.ToList()
};
}
var baseSku = new ProductTemplate { Name = "Tee", Price = 499, Tags = { "apparel" } };
var red = baseSku.DeepClone();
red.Name = "Tee Red";
red.Tags.Add("red");
Console.WriteLine($"{baseSku.Tags.Count} vs {red.Tags.Count}");
Run Example »
Edit the code below and click Run to see the result in Toolliyo’s live editor.
What happened?
- DeepClone copies the tag list so edits on red do not mutate base.
- ICloneable exists but explicit DeepClone is clearer about shallow vs deep.
Practice next
- Clone and change Name; confirm base unchanged.
- Show why Tags.ToList() matters (shallow trap).
- Clone a third color from base.
- Add a Size field and clone it.
- Accidentally share Tags and watch the bug.
Remember
Clone templates cheaply. Deep vs shallow matters. Prefer explicit DeepClone.
ShopNest product templates
Sellers clone a base SKU for color variants.
Outcome: Fast listing creation without shared tag bugs.
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!