Tutorials Design Patterns in C#

Strategy Pattern — Complete Guide

Strategy 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 21 of 69

Strategy Pattern

GoF Core ✓EnterpriseCloud & Craft

Enterprise · 2 — App patterns · ~6 min · Module 3: Behavioral Design Patterns

What is this?

Strategy defines a family of interchangeable algorithms behind one interface — pick at runtime.

Why should you care?

ShopNest shipping cost (Standard, Express, StorePickup) should swap without editing checkout.

See it live — copy this example

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

public interface IShippingStrategy { decimal Quote(decimal weightKg); }
public sealed class StandardShipping : IShippingStrategy
{
    public decimal Quote(decimal w) => 40 + w * 8;
}
public sealed class ExpressShipping : IShippingStrategy
{
    public decimal Quote(decimal w) => 80 + w * 15;
}
public sealed class Checkout
{
    private readonly IShippingStrategy _shipping;
    public Checkout(IShippingStrategy shipping) => _shipping = shipping;
    public decimal Total(decimal items, decimal weight) => items + _shipping.Quote(weight);
}

Console.WriteLine(new Checkout(new ExpressShipping()).Total(1000, 2));

Run Example »

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

Code
Result

What happened?

  • Checkout depends on IShippingStrategy.
  • Inject Express or Standard.
  • Same structure as many “calculator” DI registrations.

Practice next

  1. Quote Standard vs Express.
  2. Add StorePickup returning 0.
  3. Select strategy from user choice.
  4. Pass destination city into Quote.
  5. Register strategies in a dictionary by code.

Remember

Interchangeable algorithms. Inject the strategy. Open for new options.

ShopNest shipping strategies

Buyer picks Express at checkout.

Outcome: Totals use ExpressShipping without if-else soup.

Interview prep for this lesson

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

Mid PDF Detailed
Strategy Interface (ISortStrategy):?
Short answer: The ISortStrategy interface defines a common method (Sort) that all concrete strategies must implement. This allows clients (in this case, the Sorter class) to work with any strategy that implements this in…
Mid PDF Detailed
Strategy Interface:?
Short answer: The ISortStrategy interface allows any concrete sorting algorithm to be swapped in and out. The context (Sorter) doesn't need to know the specifics of the algorithm; it only knows that it can call the Sort…
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