Skip to content

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();
}
}
// Usage
var builder = new ConcreteBuilder();
new Director().Construct(builder);
Product p = builder.GetResult();

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.