Builder
Context: Separate the construction of a complex object from its representation so that the same construction process can create different representations.
public class Product{ public string PartA { get; set; } public string PartB { get; set; }}
public interface IBuilder{ void BuildPartA(); void BuildPartB(); Product GetResult();}
public class ConcreteBuilder : IBuilder{ private Product _product = new(); public void BuildPartA() => _product.PartA = "A"; public void BuildPartB() => _product.PartB = "B"; public Product GetResult() => _product;}
public class Director{ public void Construct(IBuilder builder) { builder.BuildPartA(); builder.BuildPartB(); }}
// Usagevar builder = new ConcreteBuilder();new Director().Construct(builder);Product p = builder.GetResult();Real-world usage example
Section titled “Real-world usage example”Building SQL queries: A SqlQueryBuilder allows step‑by‑step construction of SELECT, WHERE, ORDER BY clauses, producing different query strings.
Example: In C#, StringBuilder is a classic builder for constructing strings efficiently. Entity Framework Core’s IQueryable uses fluent builder methods like .Where(), .OrderBy(), .Select() to build queries.